


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Hibernate 中的对象有三种状态:瞬时状态(Transient),持久状态(Persistent),1.脱管状态(Detached)1.1.瞬时状态(Transient)由 new 命令开辟内存空间的 Java 对象,也就是平时所熟悉的普通 Java 对象。如:Studentstu=newStudent();瞬时对象特点:(1)不和 Session 实例关联(2)在数据库中没有和瞬时对象关联的记录2.2.持久斗犬态犬态(Persistent)持久的实例在数据库中有对应的记录,并拥有一个持久化标识(identifier).持久对象总是与 Session 和 Transaction 相关联,
2、在一个 Session 中,对持久对象的改变不会马上对数据库进行变更,而必须在 Transaction 终止,也就是执行 commit()之后,才在数据库中真正运行 SQL 进行变更,持久对象的状态才会与数据库进行同步。在同步之前的持久对象称为脏(dirty)对象。瞬时对象转为持久对象:(1)通过 Session 的 save()和 saveOrUpdate()方法把一个瞬时对象与数据库相关联,这个瞬时对象就成为持久化对象。(2)使用 fine(),get(),load()和 iterater()待方法查询到的数据对象, 将成为持久化对象。 持久化对象的特点:(1)和 Session 实例关联
3、(2)在数据库中有和持久对象关联的记录3.3.脱管状态( (Detached)与持久对象关联的 Session 被关闭后,对象就变为脱管对象。对脱管对象的引用依然有效,对象可继续被修改。脱管对象特点:(1)本质上和瞬时对象相同(2)只是比爱瞬时对象多了一个数据库记录标识值 id.持久对象转为脱管对象:当执行 close()或 clear(),evict()之后,持久对象会变为脱管对象。瞬时对象转为持久对象:通过 Session 的 update(),saveOrUpdate()和 lock()等方法,把脱管对象变为持久对象。三种状态相互转化的状态图如下:4.结合 save(),update()
4、,saveOrUpdate()方法说明对象的状态(1)Save()方法将瞬时对象保存到数据库,对象的临时状态将变为持久化状态。当对象在持久化状态时,它一直位于 Session 的缓存中,对它的任何操作在事务提交时都将同步到数据库,因此,对一个已经持久的对象调用 save()或 update()方法是没有意义的。如:Studentstu=newStrudnet();stu.setCarId(“200234567);stu.setId(“100”);/打开 Session,开启事务session.save(stu);stu.setCardId(“20076548);session.save(stu
5、);/无效session.update(stu);/无效/提交事务,关闭 Session(2)update()方法两种用途重新关联脱管对象为持久化状态对象,显示调用 update()以更新对象。调用 update()只为了关联一个脱管对象到持久状态,当对象已经是持久状态时,调用 update()就没有多大意义了。如:/打开 session,开启事务stu=(Student)session.get(Student.class,123456);BJhbern.te深入理解深入理解3-1关于生命周期及状态问题关于生命周期及状态问题stu.setName(Body);session.update(st
6、u);/由于 stu 是持久对象,必然位于 Session 缓冲中,对 stu 所做的变更将/被同步到数据库中。所以 update()是没有意义的,可以不要这句效果一样的。/提交事务,关闭 SessionHibernate 总是执行 update 语句,不管这个脱管对象在离开 Session 之后有没有更改过,在清理缓存时 Hibernate 总是发送一条 update 语句,以确保脱管对象和数据库记录的数据一致,如:Studentstu=newStrudnet();stu.setCarId(“1234”);/打开 Session1,开启事务session1.save(stu);/提交事务,关
7、闭 Session1stu.set(“4567对防对象进行更改/打开 Session2,开启事务session2.update(stu);/提交事务,关闭 Session2注:即使把 session2.update(stu);这句去掉,提交事务时仍然会执行一条 update()语句。如果希望只有脱管对象改变了,Hibernate 才生成 update 语句,可以把映射文件中标签的 select-before-update 设为 true,这种会先发送一条 select 语句取得数据库中的值,判断值是否相同,如果相同就不执行 update 语句。不过这种做法有一定的缺点,每次 update语句之前总是要发送一条多余的 select 语句,影响性能。对于偶尔更改的类,设置才是有效的,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 物流公司劳务合同
- 安全生产考核全景展示试题及答案
- 助力通过2025年一级建造师试题及答案
- 2025年入团考试亮点与试题及答案
- 初级审计师道德规范应掌握的试题及答案
- 二级消防工程师必看试题及答案剖析
- 初级审计的学习心得与知识应用试题及答案
- 护理质量管理与评估试题及答案
- 消防安全隐患治理对策与实施方案试题及答案
- 专科护士在康复医学中的安全实践策略
- 出租屋消防培训课件
- 变电安全典型案例培训
- 年产4亿片阿奇霉素片的精烘包及车间设计
- 北师大版(2019) 必修第二册 Unit 5 Humans and Nature Lesson 3 Race to the Pole Writing Workshop课件
- 威努特防火墙配置手册
- Mysql 8.0 OCP 1Z0-908 CN-total认证备考题库(含答案)
- 起重机械质量安全风险管控清单(制造(含安装、修理、改造))
- 第26届国际电接触会议暨第四届电工产品可靠性与电接触国际会议联合会议通讯录
- 2023年生态环境综合行政执法考试参考题库(400题)
- 2023-2024学年新疆维吾尔自治区乌鲁木齐市小学语文六年级期末通关试卷附参考答案和详细解析
- 建筑学专业基础知识必学必会考试题库(500题)
评论
0/150
提交评论