Hibernate04.hibernate实体映射.pdf

  1. 1、本文档共55页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Hibernate04.hibernate实体映射

Hibernate 程基础 映射基础 教学目标 教学内容 – Session的缓存的作用 – Session清理缓存的时间点 – 对象的临时状态、持久化状态和游离状态 – 用Session的update()方法使游离对象转变为持久化对象 在Hibernate应用中Java对象的状态 瞬时状态(transient):刚刚用new语句创建,还没 有被持久化,不处于Session的缓存中。处于临时状 态的Java对象被称为临时对象。 持久化状态(persistent ):已经被持久化,加入到 Session的缓存中。处于持久化状态的Java对象被称 为持久化对象。 游离状态(托管) (detached ):已经被持久化,但不 再处于Session的缓存中。处于游离状态的Java对象 被称为游离对象。 Hibernate对象的状态图 瞬时态对象:ID没有值,和数据库中的数据没有任何关系 在以下情况瞬时转换为持久态: save saveOrUpdate 或者从数据库中load get find 当delete时从持久态变成瞬时态 当执行close clear evict持久变成游离态 Customer对象的状态转换过程 用Session的update()方法关联游离对象 Customer customer=new Customer(); customer.setName(Tom); Session session1=sessionFactory.openSession(); Transaction tx 1 = session1.beginTransaction(); session1.save(customer); tx 1.commit(); session1.close(); //此时Customer对象变为游离对象 Session session2=sessionFactory.openSession(); Transaction tx2 = session2.beginTransaction(); customer.setName(Linda) //在和session2关联之前修改Customer对 象的属性 session2.update(customer); customer.setName(Jack); //在和session2关联之后修改Customer对 象的属性 mit(); session2.close(); Session的update()方法 Session的update()方法完成以下操作: – (1)把Customer对象重新加入到Session缓存中,使 变为持久化对象。 – (2 )计划执行一个update语句。值得注意的是, Session只有在清理缓存的时候才会执行update语句, 并且在执行时才会把Customer对象当前的属性值组装 到update语句中。因此,即使程序中多次修改了 Customer对象的属性,在清理缓存时只会执行一次 update语句。 客户层与业务逻辑层之间传递临时对象和游离对象的 过程 理解Session的缓存 当Session 的save()方法持久化一个Customer对象时,Customer对象 被加入到Session 的缓存中,以后即使应用程序中的引用变量不再引 用Customer对象,只要Session的缓存还没有被清空,Customer对 象仍然处于生命周期中。 当Session 的load()方法试图从数据库中加载一个Customer对象时, Session先判断缓存中是否已经存在这个Customer对象,如果存在, 就不需要再到数据库中检索。 理解Session的缓存 tx = session.beginTransaction(); Customer c1=new Customer(Tom,new HashSet()); //Customer对象被持久化,并且加入到Session的缓存中 session.save(c1); Long id=c1.getId(); //c1变量不再引用Customer对象 c1=null; /

文档评论(0)

yaocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档