zoukankan      html  css  js  c++  java
  • hibernate 三种状态

    JPA是Java Persistence API的简称,中文名Java持久层API。

    因JPA是由Hibernate的创建者编写,因此和Hibernate基本相似一致。JPA由不同的服务解析,因此在weblogic,jboss会有不同,因此在做注解时尽量用JPA。

    Hibernate对象的三种状态:

                    transient :转瞬即逝的

                    persist :   持久的

                    detached: 超脱的,脱离的,游离态

    这三种状态相当于对象存储的过程: 准备->执行->结束返回

    transient: 在session中new 一个DO对象,向DO中插入数据,在进行save,update,delete前此对象属于临时状态,数据库没有对应的数据对应。

    persist:    执行save(),persist(),saveOrUpdate()等操作后,在session未关闭前,此对象就属于持久化状态,在此时对数据的更改,

                      在session结束前都会被自动同步到库中。也可通过flush()让立即同步。

                      注意:merge()是将当前对象复制一份,让复制的那份去执行保存更新操作,自身仍处于脱离状态,因此merge做save动作时对象不会有主键ID。

                                 delete()执行后对象数据还在,但是数据库数据已经不存在,因此此时的数据处于脱离状态,session关闭时并不会触发数据库同步。

    detached: DO对象不受session管控,对DO对象数据的更改不会与数据库同步。session关闭后,数据处于游离的。或者clear()强制让数据处于游离。

                       merge,delete也会使对象处于游离。

  • 相关阅读:
    四套读写方案
    如何保证ArrayList线程安全
    异常总结<经典例题>
    java.移位运算符
    java反射机制
    面试题:return和finally执行
    Spring_通过注解配置 Bean(1)
    Spring_通过 FactoryBean 配置 Bean
    Spring_通过工厂方法配置 Bean
    Spring_管理 Bean 的生命周期
  • 原文地址:https://www.cnblogs.com/DennyZhao/p/8487302.html
Copyright © 2011-2022 走看看