Hibernate 应用中JAVA对象的状态
1.1 临时状态
特点:
不处于于Session的缓存中,也可以说,不被任何一个session实例关联
在数据库中没有对应的记录
在什么情况,JAVA对象进入临时状态
当通过new语句创建一个java对象。
session的delete()方法能是一个持久化对象转变为临时状态
1.2持久化状态
特点:
为一个session实例的缓存中,也可以说,持久化对象总是被一个session关联着
持久化对象和数据库中的相关记录对象
session在清理缓存时,会根据持久化对象的属性变化,来同步更新数据库。
session.save
session.load
session.find()
session.update.session.saveOrUpdate(),lock()
注意:Hibernate保证在同一个session实例的缓存,数据库表中的每条记录只对应惟一持久化对象。
通过session1和session2关联两个不同对象
通过一个对象被session1和session2关联 修改属性,执行update语句(在实际应用程序中,应该避免一个JAVA对象同时被多个session实例关联,因为这会导致重复执行SQL语 句,并且极容易出现一
些并发问题)
1.3 游离状态
特点:
不再位于session的缓存中,也可以说,游离对象不被session关联
游离对象由持久环对象转换过来的,因此在数据库中可能还存在与它对应的记录(前提条件是没有其他的程序删除了这条记录)
session的保存,更新,删除,查询方法
1.save
在同一个session实例中保存
在不同一个sesion实例中保存(数据库中进入两条代表相同业务记录,因此不符合业务逻辑)
2.update()方法与merge()方法
同一个session实例修改(多次修改属性,在清理缓存时只会执行一次update语句)
在不同session实例中修改(selct-before-update="true")3.saveOrUpdate()方法 在同一个session实例中保存一个临时对象和游离状态对象
4.load 和get方法的区别
5.session的delete()方法
理解Session缓存机制
Hibernate中的缓存分为两种:一级缓存(Session级别)和二级缓存
作用:1.充当蓄水池的作用,减少程序访问数据库的次数。
2.保证缓存中的数据与数据库同步。清理缓存