hibernate jpa_JPA / Hibernate实体状态转换的初学者指南
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实体状态转换的初学者指南相关推荐
- JPA / Hibernate实体状态转换的初学者指南
介绍 Hibernate将开发人员的思维方式从SQL语句转移到实体状态转换. 一旦实体由Hibernate主动管理,所有更改将自动传播到数据库. 操作域模型实体(及其关联)比编写和维护SQL语句容易得 ...
- hibernate jpa_JPA /Hibernate刷新策略初学者指南
hibernate jpa 介绍 在我以前的文章中,我介绍了实体状态转换 对象关系映射范例. 当刷新当前持久性上下文时,所有管理实体状态转换都将转换为关联的数据库语句. Hibernate的刷新行为并 ...
- hibernate jpa_JPA / Hibernate:基于版本的乐观并发控制
hibernate jpa 本文是对Hibernate和JPA中基于版本的乐观并发控制的介绍. 这个概念已经很老了,上面已经写了很多东西,但是无论如何我都看到了它被重新发明,误解和滥用. 我在写它只是 ...
- jpa和hibernate_JPA和Hibernate级联类型的初学者指南
jpa和hibernate 介绍 JPA将实体状态转换转换为数据库DML语句. 由于对实体图进行操作很常见,因此JPA允许我们将实体状态更改从父级传播到子级 . 通过CascadeType映射配置此行 ...
- JPA和Hibernate级联类型的初学者指南
介绍 JPA将实体状态转换转换为数据库DML语句. 由于对实体图进行操作很常见,因此JPA允许我们将实体状态更改从父级传播到子级 . 通过CascadeType映射配置此行为. JPA与Hiberna ...
- JPA /休眠刷新策略初学者指南
介绍 在我之前的文章中,我介绍了实体状态转换 对象关系映射范例. 当刷新当前持久性上下文时,所有管理实体状态转换都将转换为关联的数据库语句. Hibernate的刷新行为并不总是像人们想象的那么明显. ...
- JPA persistence.xml 文件初学者指南
介绍 在本文中,我将解释 JPA persistence.xml配置文件的用途,以及如何使用可用的 XML 标记或属性设置 Java Persistence 应用程序. 虽然 Spring 应用程序可 ...
- hibernate状态转换关系图【原】
hibernate状态转换 其它参考 简单理解Hibernate三种状态的概念及互相转化 简单的Hibernate入门介绍 转载于:https://www.cnblogs.com/whatlonely ...
- hibernate教程--持久化类状态详解
一. Hibernate的持久化类状态: 1.1 Hibernate的持久化类状态 持久化类:就是一个实体类 与 数据库表建立了映射. Hibernate为了方便管理持久化类,将持久化类分成了三种状态 ...
最新文章
- python将一个json字典转换为一个python对象
- ISA Server 2006 的内部客户端概念
- js进阶 13-6 jquery动画效果相关常用函数有哪些
- 递归行为时间复杂度估算
- 22届腾讯暑期实习三轮面试面经(已oc)
- python plot map_python的colormap总结(matplotlib+ncl+气象家园调色盘)
- weak和assign的区别
- 杭电 1242题(深度优先搜索)
- FME实现三调地类变化流量表制作
- 超参数(Hyperparameter)
- MATLAB | sRGB图像的灰度转换算法
- JSON数据交互和RESTful支持
- 跟风 —— 由技术跟风所想到的
- 图像检索|经典论文阅读|快速入门|综述学习
- 强化学习系列(一):强化学习简介
- EXP-00002错误解决方法
- 医学数字影像和通讯(DICOM)---DICOM标准3.0 第一部分:介绍和概述
- mysql 最大导入限制_分享mysql导入.sql 数据库文件最大限制的修改
- java 毕向东 内部类_Java基础毕向东day05 对象与对象的区别,匿名内部类,函数的执行流程。...
- PS PNG导出的时候是否交错有什么影响
热门文章
- 【2018.5.19】模拟赛之四-ssl2435 航空公司【并查集,二分】
- 【2018.3.24】模拟赛之三-ssl2547 圆环【数论】
- 编译原理(四)之解析语言翻译成三地址代码
- 汇编语言(三十三)之四进制转十进制
- 两步验证杀手锏:Java 接入 Google 身份验证器实战
- Java IO: 字符流的Piped和CharArray
- Java多线程系列--“JUC线程池”06之 Callable和Future
- 漫画:什么是SHA系列算法
- gi如果某次提交错误,如何撤回
- #面试!,一定要注意,避免踩这些雷!!