no eq/hC at all eq/hC with the id property eq/hC with buisness key
use in a composite-id No Yes Yes
multiple new instances in set Yes No Yes
equal to same object from other session No Yes Yes
collections intact after saving Yes No Yes
首先解释一下,no eq/hc at all指的是不是全部需要后面的两种情况。
第一种情况:如果在我们的pojo当中涉及到有联合主键的操作时,那么不但需要id,还要业务键作为equels的判断值。
第二种情况:如果在我们的系统中涉及到。在一个新的set中,添加多个新的对象,然后save的时候。如:
HashSet someSet = new HashSet();
someSet.add(new PersistentClass());
someSet.add(new PersistentClass());
assert(someSet.size() == 2);
当hibernate。save的时候,第一个会持久化到数据库,此时第一个已经是一个po了,他和第二个不是同一个对象,因为此时第二个还是一个vo对象。这种情况是采用主键的方式,是可以插入到数据库当中,但是通常情况之下,我们是不允许具有相同名字的人存到数据库中。这样又如何处理呢?就是为了避免业务键上具有相同的值,该如何处理呢?就是,让业务主键参与。主键可以不参与equeas。
第三种情况:当我们的系统涉及到一个相同的一个纪录,会在不同的session中操作的时候。如:
PersistentClass p1 = sessionOne.load(PersistentClass.class, new Integer(1));
PersistentClass p2 = sessionTwo.load(PersistentClass.class, new Integer(1));
assert(p1.equals(p2));
那末不但要让主键参与,还要让业务键参与equals。
第四种情况:当我们的系统中涉及到,不使用set集合持久化数据的时候。如:
HashSet set = new HashSet();
User u = new User();
set.add(u);
session.save(u);
assert(set.contains(u));
就可以只让业务键参与equeals。
分享到:
相关推荐
本节课主要讲解Java基础知识,包括跨平台性、逻辑运算符、构造器、break、continue、return语句、equals和hashCode方法、String类继承、值传递和引用传递等内容。 1. 跨平台性 Java语言编写的程序,一次编译后,...
information_overload
override and overload difference
Overload
Tech overload BRK
overload and override.txt的区别重载和隐藏的区别
本文详细地描述了overload 和override的区别
该篇文章主要介绍frida脚本hook android app的对象方法以及当方法重载时如何使用。感兴趣的朋友可以下载下来了解了解。
资源来自pypi官网。 资源全名:python-overload-0.0.1.tar.gz
Giving too much social support social overload on social networking sites
C++重载的学习课件 包括函数重载和运算符重载 学校的课件 内容非常详细实用 供大家学习!
equals 和 hashCode 有什么区别 说说你对 final 修饰符的理解 说说你对泛型的理解 泛型中 extends 和 super 的区别 描述下 Java 中的异常处理机制 什么是 HashMap,描述下其实现原理 HashMap、Hashtable 和 HashSet ...
消息循环重载 message overload
便利的xml修改器,不用记事本开文件然后看的一头雾水再茫然的退出来了。支持自带部件修改,mod部件不定
C#中方法的重写(override)和重载(overload)的区别
perl用overload重置运算符,实现复数运算,复数用向量表示
过载装饰器 ... import { overload , defaultOverload } from 'overload-decorator' ; class Calculator { // we can have an overload that accepts two numbers @ overload ( Number , Number )
方法的重写(Overriding)和重载(Overloading)是Java多态性的不同表现,想要了解更多请参考本
受和启发的样式和 API。 npm install overload-js 基本用法 var hello = ( function ( ) { var secret = '!' ; return overload ( ) . args ( ) . use ( function ( ) { return secret ; } ) . args ...
主要介绍了Java方法重载Overload原理及使用解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下