Java Hibernate对象(瞬时态,持久态,脱管态)详解
Java Hibernate对象
由于最近学习Java Hibernate,这里对Java Hibernate对象的几种状态进行了资料整理, 有兴趣的朋友可以看下。
瞬时(transient):数据库中没有数据与之对应,超过作用域会被JVM垃圾回收器回收,一般是new出来且与session没有关联的对象。
持久(persistent):数据库中有数据与之对应,当前与session有关联,并且相关联的session没有关闭,事务没有提交;
持久对象状态发生改变,在事务提交时会影响到数据库(hibernate能检测到)。
(当对象save后,会将数据持久化,这时obj.set()后再提交事务hibernate会检测到数据的修改。
而如果在save这个对象之前(即使是处在事务中),也即是还没有持久化这个对象之前,用obj.set()则hibernate不能检测到数据修改,不会影响数据库)
脱管/游离(detached):数据库中有数据与之对应,但当前没有session与之关联;脱管对象状态发生改变,hibernate不能检测到。
hibernate对象的三种状态,转换图:
Commit()会关闭session
面试图:如果判断一个对象处于怎样的状态?
主要的依据是: 1. 看该对象是否处于session, 2, 看在数据库中有没有对应的记录
总结:
瞬时态: 没有session管理,同时数据库没有对应记录
持久态: 有session管理,同时在数据库中有记录
脱管态/游离态: 没有session管理,但是在数据库中有记录.
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
栏 目:JAVA代码
下一篇:Java基本数据类型和运算符详解
本文标题:Java Hibernate对象(瞬时态,持久态,脱管态)详解
本文地址:http://www.codeinn.net/misctech/43013.html
阅读排行
- 1Java Swing组件BoxLayout布局用法示例
- 2java中-jar 与nohup的对比
- 3Java邮件发送程序(可以同时发给多个地址、可以带附件)
- 4Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type异常
- 5Java中自定义异常详解及实例代码
- 6深入理解Java中的克隆
- 7java读取excel文件的两种方法
- 8解析SpringSecurity+JWT认证流程实现
- 9spring boot里增加表单验证hibernate-validator并在freemarker模板里显示错误信息(推荐)
- 10深入解析java虚拟机