- 1、本文档共55页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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;
/
您可能关注的文档
最近下载
- 领导班子成员谈心谈话方案.docx VIP
- 2024年人教版五年级上册道德与法治精编知识点.doc
- 养成教育主题班会.ppt
- 通化(2009)1008-VI 时速200公里客货共线铁路隧道内接触悬挂安装图(单线双箱运输,绝缘锚段关节).pdf
- 工商管理大学课程设计民营企业职工培训管理.doc VIP
- 一种电力营销用智慧稽查数字化平台及系统.pdf VIP
- 矿建工程安全监理实施细则.doc
- 会计涉税分录.pdf VIP
- 贵州省黔东南苗族侗族自治州2023-2024学年九年级上学期期末历史试题(含解析).pdf VIP
- 九年级音乐上册第3单元演唱歌唱美丽的家乡全国公开课一等奖百校联赛微课赛课特等奖课件.ppt VIP
文档评论(0)