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


清理缓存

猜你喜欢

转载自fei619732374.iteye.com/blog/1622496
今日推荐