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.保证缓存中的数据与数据库同步。

清理缓存

相关推荐