hibernate jpa

介绍

Hibernate将开发人员的思维方式从SQL语句转移到实体状态转换。 一旦由Hibernate主动管理实体,所有更改将自动传播到数据库。

操作域模型实体(及其关联)比编写和维护SQL语句容易得多。 如果没有ORM工具,则添加新列需要修改所有关联的INSERT / UPDATE语句。

但是,Hibernate也不是灵丹妙药。 Hibernate并没有使我们不必担心实际执行SQL语句。 控制Hibernate并不像人们想象的那么简单,并且必须检查 Hibernate代表我们执行的所有SQL语句 。

实体陈述

如前所述,Hibernate监视当前连接的实体。 但是要使实体成为受管理实体,它必须处于正确的实体状态。

首先,我们必须定义所有实体状态:

  • 新建(瞬态):从未与Hibernate会话(也称为持久性上下文)相关联且未映射到任何数据库表行的新创建的对象被视为处于“ 新建(瞬态)”状态。需要显式调用EntityManager#persist方法或使用传递持久性机制。
  • 持久性(托管): 持久性实体已与数据库表行关联,并由当前运行的持久性上下文进行管理。 对此类实体所做的任何更改都将被检测到,并传播到数据库(在会话刷新期间)。 使用Hibernate,我们不再需要执行INSERT / UPDATE / DELETE语句。 Hibernate采用“事务后写”工作方式,并且在当前Session刷新时间的最后一个负责时刻同步更改。
  • 分离:关闭当前正在运行的持久性上下文后,所有先前管理的实体都将分离 。 不再跟踪连续的更改,也不会自动进行数据库同步。要将分离的实体与活动的Hibernate会话相关联,可以选择以下选项之一:
    • 重新连接
  • 删除:尽管JPA要求只允许删除管理实体 ,但是Hibernate也可以删除分离的实体 (但只能通过Session#delete方法调用)。删除的实体仅计划删除,并且将执行实际的数据库DELETE语句在会话刷新期间。

实体状态转换

要更改一个实体状态,我们需要使用以下实体管理接口之一:

  • 实体管理器
  • 届会

这些接口定义了实体状态转换操作,我们必须显式调用以将实体状态更改通知给Hibernate。 在刷新时,实体状态转换会具体化为数据库SQL语句(INSERT / UPDATE / DELETE)。

翻译自: https://www.javacodegeeks.com/2014/07/a-beginners-guide-to-jpahibernate-entity-state-transitions.html

hibernate jpa

hibernate jpa_JPA / Hibernate实体状态转换的初学者指南相关推荐

  1. JPA / Hibernate实体状态转换的初学者指南

    介绍 Hibernate将开发人员的思维方式从SQL语句转移到实体状态转换. 一旦实体由Hibernate主动管理,所有更改将自动传播到数据库. 操作域模型实体(及其关联)比编写和维护SQL语句容易得 ...

  2. hibernate jpa_JPA /Hibernate刷新策略初学者指南

    hibernate jpa 介绍 在我以前的文章中,我介绍了实体状态转换 对象关系映射范例. 当刷新当前持久性上下文时,所有管理实体状态转换都将转换为关联的数据库语句. Hibernate的刷新行为并 ...

  3. hibernate jpa_JPA / Hibernate:基于版本的乐观并发控制

    hibernate jpa 本文是对Hibernate和JPA中基于版本的乐观并发控制的介绍. 这个概念已经很老了,上面已经写了很多东西,但是无论如何我都看到了它被重新发明,误解和滥用. 我在写它只是 ...

  4. jpa和hibernate_JPA和Hibernate级联类型的初学者指南

    jpa和hibernate 介绍 JPA将实体状态转换转换为数据库DML语句. 由于对实体图进行操作很常见,因此JPA允许我们将实体状态更改从父级传播到子级 . 通过CascadeType映射配置此行 ...

  5. JPA和Hibernate级联类型的初学者指南

    介绍 JPA将实体状态转换转换为数据库DML语句. 由于对实体图进行操作很常见,因此JPA允许我们将实体状态更改从父级传播到子级 . 通过CascadeType映射配置此行为. JPA与Hiberna ...

  6. JPA /休眠刷新策略初学者指南

    介绍 在我之前的文章中,我介绍了实体状态转换 对象关系映射范例. 当刷新当前持久性上下文时,所有管理实体状态转换都将转换为关联的数据库语句. Hibernate的刷新行为并不总是像人们想象的那么明显. ...

  7. JPA persistence.xml 文件初学者指南

    介绍 在本文中,我将解释 JPA persistence.xml配置文件的用途,以及如何使用可用的 XML 标记或属性设置 Java Persistence 应用程序. 虽然 Spring 应用程序可 ...

  8. hibernate状态转换关系图【原】

    hibernate状态转换 其它参考 简单理解Hibernate三种状态的概念及互相转化 简单的Hibernate入门介绍 转载于:https://www.cnblogs.com/whatlonely ...

  9. hibernate教程--持久化类状态详解

    一. Hibernate的持久化类状态: 1.1 Hibernate的持久化类状态 持久化类:就是一个实体类 与 数据库表建立了映射. Hibernate为了方便管理持久化类,将持久化类分成了三种状态 ...

最新文章

  1. python将一个json字典转换为一个python对象
  2. ISA Server 2006 的内部客户端概念
  3. js进阶 13-6 jquery动画效果相关常用函数有哪些
  4. 递归行为时间复杂度估算
  5. 22届腾讯暑期实习三轮面试面经(已oc)
  6. python plot map_python的colormap总结(matplotlib+ncl+气象家园调色盘)
  7. weak和assign的区别
  8. 杭电 1242题(深度优先搜索)
  9. FME实现三调地类变化流量表制作
  10. 超参数(Hyperparameter)
  11. MATLAB | sRGB图像的灰度转换算法
  12. JSON数据交互和RESTful支持
  13. 跟风 —— 由技术跟风所想到的
  14. 图像检索|经典论文阅读|快速入门|综述学习
  15. 强化学习系列(一):强化学习简介
  16. EXP-00002错误解决方法
  17. 医学数字影像和通讯(DICOM)---DICOM标准3.0 第一部分:介绍和概述
  18. mysql 最大导入限制_分享mysql导入.sql 数据库文件最大限制的修改
  19. java 毕向东 内部类_Java基础毕向东day05 对象与对象的区别,匿名内部类,函数的执行流程。...
  20. PS PNG导出的时候是否交错有什么影响

热门文章

  1. 【2018.5.19】模拟赛之四-ssl2435 航空公司【并查集,二分】
  2. 【2018.3.24】模拟赛之三-ssl2547 圆环【数论】
  3. 编译原理(四)之解析语言翻译成三地址代码
  4. 汇编语言(三十三)之四进制转十进制
  5. 两步验证杀手锏:Java 接入 Google 身份验证器实战
  6. Java IO: 字符流的Piped和CharArray
  7. Java多线程系列--“JUC线程池”06之 Callable和Future
  8. 漫画:什么是SHA系列算法
  9. gi如果某次提交错误,如何撤回
  10. #面试!,一定要注意,避免踩这些雷!!