JAVA学习网首页 把生活查询网加入收藏 把JAVA学习网设为首页 联系方式
    Hi,JAVA学习
JAVA基础 设计模式 数据库 JavaBeans J2EE JavaDelphi 用户界面 综合文章  
hibernate高级特性_1
时间:22/04/2007
作者:网络
来源:网络
小提示点这里把文章加入您的收藏夹,方便下次查看
设置文章字体大小:[ ]

hibernate对象生命周期内的三种状态
1.  transient(自由状态)
     自由状态就是java对象创建出来,在内存中自由存在,与数据记录无关
2.  Persistent(持久状态)
     持久状态就是处于hibernate框架所管理的状态。这种状态下,实体对象的引用被hibernate容器加以管理。
3.  Detached(游离状态)
     游离状态就是在java对象所对应的session实例关闭后所处的状态

处于自由状态的对象,可以通过Session.save()转换为持久状态,同样,一个对象由Session.load()加载,也处于持久状态

Session可以看作是持久状态对象的宿主。如果Session失效,则对象就变为游离状态

Session.delete()可以使处于持久状态的对象变为自由状态

自由状态与游离状态区别


处于游离状态的对象可以再次同Session关联变为持久状态
OrderItem oi = new OrderItem();
oi.setItemNum(1);
oi.setOrderDetail( "TV set" );
oi.setOrderSeri( "12345" );

Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
session.save(oi);
tx.commit();
session.close();
此时,oi处于游离状态

在另外一段代码中出现
Session session2 = sessionFactory.openSession();
Transaction tx2 = session.beginTransaction();
session2.update(oi);
oi.setOrderDetail( "television" );
tx2.commit();
session2.close();

此时,当session2.update(oi)执行后,再执行oi.setOrderDetail(),可以发现数据库中的数据已经改变了,而我们并没有显示的将oi变为持久状态

自由状态与数据库记录无关,我们不能通过处于自由状态的对象来搜索数据库。而处于游离状态的对象虽然与Session脱离,但是我们可以通过它来寻找数据库中相应的记录


上一篇:Draw2D设计--3. LightweightSystem设计和实现剖析(3)

下一篇:java多线程,什么时候让我跨过你高高的门槛

  • 利用Java调用可执行命令
  • Java入门需掌握的30个基本概念
  • AspectJ中的around advice的学习
  • JFCUnit
  • JDK Observer设计模式之研究
  • Servlet中jdbc应用高级篇之二
  • 进度条使用实例
  • 开发J2EE应用的要领
  • Java高级学习:Java代码编写的30条建议
  • J2EE的13种核心技术(二)
  • SCJA考試訓練手冊
  • 用FILTER解决中文乱码
  • 一个表达式计算案例的设计和实现
  • 将JAVA编译为EXE的几种方法
  • Nice用户手册(四)
  • eclipse下tanghan plugin连mssql实战
  • 使用EasyMock做单元测试
  • Google 的特殊功能
  • 返回】 【顶部】 【关闭
    Copyright © 2005-2010 www.594k.com All Rights Reserved.
    版权所有:JAVA学习网 备案序号:皖ICP备06004238号