Java Hibernate对象(瞬时态,持久态,脱管态)详解

作者:lqh 时间:2022-05-22 20:07:32 

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对象的三种状态,转换图:

Java Hibernate对象(瞬时态,持久态,脱管态)详解

Java Hibernate对象(瞬时态,持久态,脱管态)详解

Commit()会关闭session

面试图:如果判断一个对象处于怎样的状态?

主要的依据是: 1. 看该对象是否处于session, 2, 看在数据库中有没有对应的记录

总结:

瞬时态: 没有session管理,同时数据库没有对应记录

持久态: 有session管理,同时在数据库中有记录

脱管态/游离态: 没有session管理,但是在数据库中有记录.

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

来源:http://www.cnblogs.com/xiangkejin/p/6000618.html

标签:Java,Hibernate对象
0
投稿

猜你喜欢

  • sprng和struts有什么区别?

    2022-03-02 02:13:35
  • java实现用户自动登录

    2023-11-10 14:38:59
  • Android webview与js的数据交互

    2021-08-18 02:56:32
  • Java十分钟精通异常处理机制

    2022-08-04 19:03:07
  • Java编程中ArrayList源码分析

    2023-05-20 00:05:25
  • C#访问SqlServer设置链接超时的方法

    2022-11-19 17:43:21
  • hadoop是什么语言

    2021-06-18 07:02:38
  • 学习Java的9张思维导图

    2021-06-10 03:38:18
  • C# 字符串的连接(实例讲解)

    2021-11-28 13:57:14
  • 利用C#代码实现图片旋转360度

    2022-04-11 05:24:38
  • SpringBoot整合Activiti工作流框架的使用

    2022-03-02 12:32:44
  • C#操作PowerPoint的方法

    2023-03-17 03:48:16
  • Java经典排序算法之插入排序

    2022-08-29 11:08:39
  • C#利用QrCode.Net生成二维码(Qr码)的方法

    2023-11-30 17:37:38
  • 浅谈Mybatis分页插件,自定义分页的坑

    2021-12-15 01:28:20
  • Spring Boot统一处理全局异常的实战教程

    2023-11-24 20:51:34
  • 基于Mybatis plus 自动代码生成器的实现代码

    2023-11-24 10:40:51
  • java 实现简单圣诞树的示例代码(圣诞节快乐)

    2023-03-13 13:13:37
  • Java为何需要平衡方法调用与内联

    2023-01-02 20:37:22
  • C#中使用@声明变量示例(逐字标识符)

    2022-04-15 14:21:48
  • asp之家 软件编程 m.aspxhome.com