posts - 167,  comments - 30,  trackbacks - 0
在Hibernate中,对象有三种状态:临时状态、持久状态和游离状态。

      临时状态:当new一个实体对象后,这个对象处于临时状态,即这个对象只是一个保存临时数据的内存区域,如果没有变量引用这个对象,则会被jre垃圾回收机制回收。这个对象所保存的数据与数据库没有任何关系,除非通过Session的save或者SaveOrUpdate把临时对象与数据库关联,并把数据插入或者更新到数据库,这个对象才转换为持久对象。 
        例如:Emp e=new Emp();    //创建临时对象 
                e.setEmpno((long) 8888); 
                e.setEName("mike"); 
                ... 
                EmpDAO d=new EmpDAO(); 
                d.save(e);//持久化 
                 ...


       持久状态: 持久化对象的实例在数据库中有对应的记录,并拥有一个持久化表示(ID)。对持久化对象进行delete操作后,数据库中对应的记录将被删除,那么持久化对象与数据库记录不再存在对应关系,持久化对象变成临时状态。 
        持久化对象被修改变更后,不会马上同步到数据库,直到数据库事务提交。在同步之前,持久化对象是脏的(Dirty)。
            例如: 
              Emp e=new Emp(); //创建了临时的对象 
               EmpDAO edao= new empDAO(); 
               e=edao.findbyEmpno((long) 7786);    //使对象与数据库记录对应,从而持久化 
               e.setEname("新的名字");                     //修改了持久化对象,使之处于 Dirty 
               ...... 
               edao.saveorupdate(e);                      //保存,但是仍然 Dirty 
               tran.commit();                             //提交,实现与数据库同步,不再Dirty 
               ......

 

       游离状态:当Session进行了Close、Clear或者evict后,持久化对象虽然拥有持久化标识符和与数据库对应记录一致的值,但是因为会话已经消失,对象不在持久化管理之内,所以处于游离状态(也叫:脱管状态)。游离状态的对象与临时状态对象是十分相似的,只是它还含有持久化标识。

          其中,持久化状态的对象,简称为:PO 
          而临时状态和游离状态的对象,简称为:VO


          1、通过get()或load()方法得到的实例都是持久化状态的。 
          2、当把session关闭时,session缓存中的持久化对象也变成游离态

             因关闭session而变成游离态的可以通过lock、save、update变成持久态 
          3、持久态实例可以通过调用delete()变成游离态 
             而游离状态的实例可以通过调用lock()或者replicate()进行持久化 
          4、save()和persist()将会引发SQL的insert,delete()会引发SQL的delete 
             update()或merge()会引发SQL的update,对持久化实例的修改在刷新提交的时候会

             被检测到, 它会引发SQL的update 
              saveOrUpdate()或者replicate ()会引发SQL的insert或者update

posted on 2010-08-16 09:59 David1228 阅读(308) 评论(0)  编辑  收藏 所属分类: Hibernate/ibatis

只有注册用户登录后才能发表评论。


网站导航:
 

<2010年8月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
2930311234

常用链接

留言簿(4)

随笔分类

随笔档案

文章档案

新闻分类

新闻档案

相册

收藏夹

Java

Linux知识相关

Spring相关

云计算/Linux/虚拟化技术/

友情博客

多线程并发编程

开源技术

持久层技术相关

搜索

  •  

积分与排名

  • 积分 - 353901
  • 排名 - 155

最新评论

阅读排行榜

评论排行榜