持久化类的要求
Hibernate对于持久化类的要求非常少。
- 它需要提供一个无参数的构造器,以便hibernate能够创建持久化实例。至少应该是包可见的。
- 提供一个标识属性,一般为数据库表的主键字段。
- 每个成员变量需要有set与get方法。
- 是非final类,以便Hibernate能够生成代理。
- 重写equals和hashCode方法:如果需要把持久化类放入Set中需要重写。
持久化类的状态
- 瞬态:对象被new出来但尚未与session关联。瞬态对象不会被持久化到数据库中,也不会被赋予持久化标识。使用Hibernate Session可以将瞬态变为持久化状态。
- 持久化:持久化实例在数据库中有对应的记录,并游泳一个持久化标识。持久化的实例可以是刚刚保存的,也可以是刚刚被加载的。持久化对象必须与Session关联(代码中的sess.save(s)),Hibernate能够知道哪些对象是持久化状态的,并且会在当前操作结束后将对象属性的变化写到数据库中,而我们无需手动update。
- 托管:曾经处于持久化的但与Session的关联断开的实例。此时仍可修改数据,再次持久化时之前修改的数据不会丢失也会写入DB。正因如此,逻辑上的长事务才成为可能(应用程序事务)。处于托管状态的对象无处锁定数据库,不会造成数据库性能下降。
时间: 2024-10-13 16:10:38