hibernate之注意事项

来源:互联网 发布:小孩画画软件哪个好 编辑:程序博客网 时间:2024/04/28 03:39

 

hibernate之注意事项

----------

1.执久类中关联表主键的属性,setter方法最最设置为private。

2.执久类中属于乐观并发控制的版本属性,最好不设置getter与setter方法,以field形式访问。注意:数字版本优于时间戳版本。

3.执久类必须扩展Serializable,不能用final声明为final类,也不能在非final类中声明public final,否则

  你必须用lazy="false"来明确地禁用代理。

4.想把持久类的实例或值类型的组件类放入Set中时(多值关联),想重用脱管实例时,必须重载equals()和hashCode()方法。

  Hibernate按值比较对象---不是按对象同一性---来确定持久类的持久化状态是否需要更新。hibernate

  脏检查自动侦测对象状态的改变,以便更新过的状态与数据库同步。这有一个重要的例外:集合是按同一性比较的。

  由此明白,为什么Set中的执久类要实现equals()与hashCode()方法了,因为hibernate按值比较对象的。

  还有一点,集合的setter方法最好删除,不要这个方法。否则在级联时(新set中的数据跟原有set中的数据一样,

  但就不是同一个对象)hibernate会删除原有的set中的对象(在表中删除数据集),然后插入当前设置的这个集合(在表中插入数据集),

  即使它们是一样的数据,但它们已经不是一个对象了,因为集合是按照引用比较的。