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

 更新时间:2016年11月21日 09:50:55   投稿:lqh  
这篇文章主要介绍了Java Hibernate对象(瞬时态,持久态,脱管态)详解的相关资料,这里对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中变量和常量详解,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • java中timer的schedule和scheduleAtFixedRate方法区别详解

    java中timer的schedule和scheduleAtFixedRate方法区别详解

    这篇文章主要为大家详细介绍了java中timer的schedule和scheduleAtFixedRate方法区别,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • 在X分钟内学会C#的入门简明教程

    在X分钟内学会C#的入门简明教程

    C#是一个优雅的、类型安全的面向对象语言。使用C#,开发者可以在.NET框架下构建安全而强大的应用程序,阅读本文可以快速的入门C#编程语言,需要的朋友可以参考下
    2014-03-03
  • SpringBoot okhtt工具类封装方式

    SpringBoot okhtt工具类封装方式

    本文介绍了如何在SpringBoot项目中使用OkHttp工具类进行HTTP请求,并提供了一个封装了GET和POST方法的工具类示例,在Controller中使用该工具类时,需要注意OkHttpClient的静态初始化和异常处理
    2025-03-03
  • Java如何替换jar中的class文件

    Java如何替换jar中的class文件

    在调整java代码过程中会遇到需要改jar包中的class文件的情况,改了如何替换呢?下面小编给大家分享java替换jar中的class文件的操作方法,感兴趣的朋友跟随小编一起看看吧
    2024-02-02
  • 使用JAR包中MANIFEST.MF的注意事项

    使用JAR包中MANIFEST.MF的注意事项

    这篇文章主要介绍了使用JAR包中MANIFEST.MF的注意事项,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Java使用Ehcache缓存框架的技术指南

    Java使用Ehcache缓存框架的技术指南

    Ehcache 是 Java 平台下一个开源、高性能的分布式缓存框架,常用于提高系统性能和可扩展性,它能够帮助开发者缓存频繁访问的数据,从而减少对数据库和其他持久化存储的访问压力,本文给大家介绍了Java使用Ehcache缓存框架的技术指南,需要的朋友可以参考下
    2025-03-03
  • IntelliJ IDEA2020.1版本更新pom文件自动导包的方法

    IntelliJ IDEA2020.1版本更新pom文件自动导包的方法

    这篇文章主要介绍了IntelliJ IDEA2020.1版本更新pom文件自动导包的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • Java8之函数式接口及常用函数式接口讲解

    Java8之函数式接口及常用函数式接口讲解

    这篇文章主要介绍了Java8之函数式接口及常用函数式接口,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • 一种类似JAVA线程池的C++线程池实现方法

    一种类似JAVA线程池的C++线程池实现方法

    线程池(thread pool)是一种线程使用模式。线程过多或者频繁创建和销毁线程会带来调度开销,进而影响缓存局部性和整体性能。这篇文章主要介绍了一种类似JAVA线程池的C++线程池实现方法,需要的朋友可以参考下
    2019-07-07

最新评论