Java持久性API(JPA)第8讲——实体管理器和实体管理器工厂

解决SpringBoot整合Activiti引用JPA:缺少javax.persistence.EntityManagerFactory 系统接入工作流Activiti的时候,发现activiti初始化表,操作数据库使用的是jpa,我们这里解决办法就是引入spring-data-jpa-starter自动配置EntityManagerFactory。 阅读详情
 
目标:掌握实体管理器和实体管理器工厂的使用。
主要内容:
u       javax.persistence.Persistence类
u       javax.persistence.EntityManagerFactory接口
u       javax.persistence.EntityManager接口
u       EntityManagerFactory对象的获取
u       EntityManager对象的获取
u       用法
1、javax.persistence.Persistence类
该类用于获取EntityManagerFactory,主要有两个方法:
u       createEntityManagerFactory(String persistenceUnitName),创建并返回参数所指定的持久单元名字所对应的EntityManagerFactory。
u       createEntityManagerFactory(String persistenceUnitName,Map properties),创建并返回EntityManagerFactory,第一个参数是持久单元的名字,第二个参数是创建EntityManagerFactory所需要的属性,这些属性会覆盖其他地方设置的属性。
两个方法均为静态方法,直接通过类名访问即可。
2、实体管理器工厂EntityManagerFactory
实体管理器工厂用于管理实体管理器,是EntityManagerFactroy的对象。主要方法如下:
u       createEntityManager(),创建实体管理器
u       createEntityManager(Map map),根据指定的属性创建实体管理器
u       close(),关闭实体管理器工厂,释放资源
u       isOpen(),判断实体管理器工厂是否关闭
接口的详细定义参加教材356页。
3、实体管理器EntityManager
对实体的操作由实体管理器完成。主要方法如下(接口详细定义参考书上357页):
u        persist(Object o),持久化实体
u        merge(T o),合并实体状态
u        remove(Object entity),删除实体
u        find(Class entityClass,Object primarykey),根据主键查找实体
u        flush(),同步到数据库
u        setFlushMode(FlushModeType flushMode),设置同步方式
u        getFlushMode(),得到同步方式
u        lock(Object entity,LockModeType lockMode),锁定
u        refresh(Object entity),更新状态
u        clear(),清除持久上下文
u        contains(Object entity),判断实体是否属于当前上下文环境
u        createQuery(String sqlString),创建查询
u        createNamedQuery(String name),创建命名查询
u        createNativeQuery(String sqlString),创建标准SQL查询
u        createNativeQuery(String sqlString,Class resultClass),创建标准SQL查询,并指定查询的结果
u        createNativeQuery(String sqlString,String resultsetMapping),创建标准SQL查询,并指定查询的结果如何映射
u        getTransaction(),返回事务对象
4、实体管理器工厂的获取
实体管理工厂可以注入,也可以通过Persistence类获取。
4.1 通过注入获取实体管理器工厂
实体管理器工厂可以使用元注释注入,可以使用下面的元注释:
javax.persistence.PersistenceUnit
表示一个对EntityManagerFactory的依赖。属性如下:
u       属性name:在环境引用上下文中(in the environment referencing context,)访问EntityManagerFactory所使用的名字,如果使用依赖注入,就不需要了。默认值是空字符串。
u       属性unitName:在persistence.xml中定义的持久单元的名字。如果要指定,JNDI中使用的实体管理器工厂的持久单元应该和该名字相同。
例如:
@PersistenceUnit
EntityManagerFactory emf;
4.2 通过Persistence类获取
    EntityManagerFactory emf = Persistence.createEntityManagerFactory(“OrderEM”);
5、实体管理器的获取
实体管理器的获取可以通过3种方式:
u        注入实体管理器;
u        查找实体管理器;
u        使用实体管理器工厂创建实体管理器。
下面分别介绍。
5.1 注入实体管理器
在应用中可以注入实体管理器,注入实体管理器可以使用下面的元注释:
javax.persistence.PersistenceContext
表示一个对EntityManager持久上下文的依赖。该元注释中的属性如下:
u       属性name:在环境引用上下文中(in the environment referencing context,)访问实体管理器所使用的名字,如果使用依赖注入,就不需要了。默认值是空字符串。
u       属性unitName:持久单元的名字,如果指定了unitName元素,必须与在JNDI中能够访问的实体管理器的持久单元的名字相同。默认值是空字符串。
u       属性type指定事务类型:事务类型包括EXTEDNED(扩展持久上下文)和TRANSACTION(和事务范围的持久上下文)。
n         PersistenceContextType.EXTENDED
n         或者PersistenceContextType.TRANSACTION。
u       属性properties:为容器或者持久提供者指定属性。与特定持久性提供厂商相关的属性也可以包含在这组属性中。提供商不识别的属性将被忽略。默认值是{}。
例如:
@PersistenceContext
EntityManager em;
    如果在当前应用中有多个持久单元,需要指出持久单元的名字。
5.2 查找实体管理器
通过简单查找查找实体管理器:
声明:@PersistenceContext(name=”orderEM”)
注入SessionContext:@Resource SessionContext ctx;
查找:EntityManager em = (EntityManager)ctx.lookup(“orderEM”);
5.3 通过实体管理器工厂创建实体管理器
实体管理器工厂是EntityManagerFactory的对象,假设实体管理器工厂的对象是emf,创建实体管理器的代码如下:
EntityManager em = emf.createEntityManager();
6、用法
如果在Java SE环境下,需要通过javax.persistence.Persistence创建EntityManagerFactory对象,然后通过EntityManagerFactory对象创建EntityManager对象,然后使用EntityManager对象。
如果在Java EE环境下,除了可以使用上面的方法外,还可以注入EntityManager对象和EntityManagerFactory对象。如果是注入EntityManagerFactory,然后创建EntityManager对象。
教材:《Java EE 5实用教程——基于WebLogic和Eclipse》
 
JPA(Java Persistence API,Java持久化API) 一、什么是JPA 对象关系映射ORM(Object-Relation Mapping)是用来将对象和对象之间的关系对应到数据库中表与表之间的关系的一种模式。ORM框架能够将Java对象映射到关系数据库,能够直接持久化复杂的Java对象。ORM框架的出现,使开发者从数据库编程中解脱出来,把更多的精力放在了业务模型与业务逻辑上。目前比较流行的ORM框架有Hibernate、iBatis、TopLin 阅读详情

相关推荐

报错异常:javax.validation.ValidationException: HV000183: Unable to load 'javax.el.ExpressionFactory'

导入javax.el的jar包到pom.xml中 <dependency> <groupId>javax.el</groupId> <artifactId>javax.el-api</artifactId> <version>2.2.4</version> </dependency>...

Abdullahi_kanye的博客 1034

两张 300I Duo 部署 Qwen3.5‑32B

开发者成功使用两张华为300IDuo(共4颗Ascend310P3芯片)部署Qwen3/Qwen3.5的30B/32B模型,并公开详细步骤。关键点包括:硬件需两张300IDuo(每芯片44GB显存),软件需CANN≥24.1和MindIE2.3.0专用镜像。部署流程涵盖驱动安装、模型下载(需修改为FP16格式)、容器启动、张量并行配置(TP=4)等环节。实测显示每芯片显存占用20-35GB,系统稳定运行。该方案已在知乎等平台验证可行,适用于Qwen3.5-32B等同类模型。

evering的博客 2257

JPA - Persistence与EntityManagerFactory简解

【1】Persistence类Persistence 类是用于获取 EntityManagerFactory 实例。该类包含一个名为 createEntityManagerFactory 的 静态方法 。createEntityManagerFactory 方法有如下两个重载版本。① 带有一个参数的方法:以 JPA 配置文件 persistence.xml 中的持久化单元名为参数;② 带有两个参数

小小默:进无止境 1万+

[c语言]用辗转相除法求最大公约数,递归和不递归两种

在c语言的学习中必然会遇到求两个数之间的最大公约数的题目,那么对于其他经典方法,最简便快捷的方式就是利用辗转相除法 辗转相除法又叫做欧几里得算法,目的是为了求两个正整数的最大公约数 定理:gcd(a,b) = gcd(b ,a%b) //在这里用(a,b)表示a和b的最大公约数证明:a可以表示成a = kb + r,则r = a %b 假设d是a,b的一个公约数,则有 d|a, d|b,而r = a - kb,因此d|r //这里的"|"的意思是 :d是b的因数 ,d是a的因数 因此d...

ZZRBlogger的博客 1万+

告别裸奔MCU!手把手教你用MCP2515+STM32搭建稳定CAN总线通信(附完整代码)

本文详细介绍了如何使用MCP2515与STM32搭建稳定可靠的CAN总线通信系统,适用于汽车电子和工业控制领域。通过硬件架构设计、驱动层实现、数据收发实战及故障排查手册,帮助开发者快速掌握CAN通信技术,提升系统稳定性和开发效率。

weixin_28703489的博客 210

java.lang.NoClassDefFoundError: javax/persistence/EntityManagerFactory

&lt;artifactId&gt;hibernate-entitymanager&lt;/artifactId&gt; &lt;version&gt;4.2.1.Final&lt;/version&gt; &lt;/dependency&gt;

2万+

ROS新手必看:如何用URDF快速搭建UR5机械臂模型(附完整代码)

本文为ROS新手提供了一份详细的UR5机械臂URDF建模实战指南。通过解析URDF核心概念,逐步讲解如何定义link与joint,并整合官方网格文件,最终构建出完整的、可在RViz中可视化与控制的UR5模型。文章还介绍了模型验证、调试技巧以及如何添加碰撞与惯性属性,为后续的物理仿真与算法开发奠定坚实基础。

pz89012345的博客 498

Spring Data JPA 之 理解 Persistence Context 的核心概念

按照 JPA 协议⾥⾯的定义:persistence unit 是⼀些持久化配置的集合,⾥⾯包含了数据源的配置、EntityManagerFactory 的配置,spring 3.1 之前主要是通过 persistence.xml 的⽅式来配置⼀个 persistence unit。

曾小二的博客 3887

基于 Simulink 的单相 PWM 整流器(四象限变流器)在高铁辅助电源系统中的建模与仿真实战教程

这是一份基于 Simulink 的实战教程。在高铁牵引供电与辅助电源系统中,单相 PWM 整流器(又称四象限变流器,4QC)是极其核心的“绿色电源”枢纽。传统的二极管整流器虽然结构简单,但会导致严重的输入电流畸变和低功率因数,对电网造成极大的谐波污染。而 PWM 整流器通过高频主动控制,不仅能将单相交流电转换为平稳的直流电,还能实现输入电流正弦化、单位功率因数(PF=1)运行,并支持能量双向流动(如列车再生制动时的能量回馈)。本教程将带你从数学模型出发,搭建一套高性能的电压电流双闭环控制系统。

amy_mhd的博客 47

S7-1500——(一)西门子PLC编程算法及程序设计1、拆解基本算法(一)

顺序队列也是一种操作受限的线性表,在一端添加数据,另一端取出数据,符合先进先出的特性工作过程:需要两个指针来指向存取元素的位置(头指针,尾指针)如下图头指针指向队列里边第一个元素位置(即下次出队元素所在的位置)尾指针是指向队列内最后一个元素的下一个位置(即下次要入队的元素要存放的位置)空队状态:最初始状态,队列没有任何元素,头指针和尾指针都指向队头,(由于没有任何元素,不能做出队操作,可进行入队操作)入队操作出队操作满队:一直入队,最终元素装满队列;满队后,虽然队列前面还有空间,但由于。

大小曲奇的博客 1609

jpa 托管_JPA 实体管理器

实体管理器概述实体管理器(EntityManager)用于管理系统中的实体,它是实体与数据库之间的桥梁,通过调用实体管理器的相关方法可以把实体持久化到数据库中,同时也可以把数据库中的记录打包成实体对象。实体的四种状态在此之前我们要先了解实体的状态及其转换,见下图JPA 实体生命周期有四种状态新建状态(New):对象在保存进数据库之前为临时状态。此时数据库中没有该对象的信息,该对象的ID属性也为空。...

weixin_39993322的博客 386

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

JPA EntityManager –HibernateEntityManager

JPA EntityManager is at the core of Java Persistence API. Hibernate is the most widely used JPA implementation. JPA EntityManager是Java Persistence API的核心。 Hibernate是使用最广泛的JPA实现。 JPA实体管理器 (JPA Entity...

从零开始的教程世界 1995

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

JPA入门教程【转】

JPA(Java Persistence API,Java持久化API)一、什么是JPA对象关系映射ORM(Object-RelationMapping)是用来将对象和对象之间的关系对应到数据库中表与表之间的关系的一种模式。ORM框架能够将Java对象映射到关系数据库,能够直接持久化复杂的Java对象。ORM框架的出现,使开发者从数据库编程中解脱出来,把更多的精力放在了业务模...

weixin_34205826的博客 534

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

jpa的Api

1.JPA相关接口/类:Persistence: 1.Persistence  类是用于获取 EntityManagerFactory 实例。该类包含一个名为 createEntityManagerFactory 的 静态方法 。 2.createEntityManagerFactory 方法有如下两个重载版本。 带有一个参数的方法以 JPA 配置文件 persistence.xml 中的持

Strive_Peter的博客 407

【SpringData&JPA从入门到精通】02-JPA API

笔记来源:尚硅谷jpa开发教程全套完整版(初学者零基础入门) 文章目录JPA API1、Persistence2、EntityManagerFactory3、EntityManager3.1、find()3.2、getReference()3.3、persist()3.4、remove()3.5、merge()1)临时对象2)游离对象3.6、其他方法1)flush()2)refresh()4、EntityTransaction总结 JPA API 1、Persistence Persistence 类是.

VectorX's Blog 1169

core 实例化接口_JPA持久化核心接口EntityManager API详解(一)

JPA入门精要系列:(1):JPA框架组件核心组成本文由牛旦教育原创出品,欢迎收藏、点赞、分享。转载请注明来源@牛旦教育IT课堂0.导引作为企业级Java开发,Java EE(现在改为Jakarta EE)标准技术族成员之一的JPA持久化框架,其核心组件主要包括除了Persistence和EntityManagerFactory外,JPA最核心的接口就是EntityManager。无论其他查询结果...

weixin_30431137的博客 463

JPA API

本文参考自: 原文地址 Persistence Persistence  类是用于获取 EntityManagerFactory 实例。该类包含一个名为 createEntityManagerFactory 的 静态方法 。createEntityManagerFactory 方法有如下两个重载版本。带有一个参数的方法以 JPA 配置文件 persistence.xml 中的持久化单元名为参...

running987的博客 210

JPA-API

1.javax.persistence.Persistence:   Persistence 类是用于获取 EntityManagerFactory 实例。该类包含一个名为 createEntityManagerFactory 的 静态方法 。  createEntityManagerFactory 方法有如下两个重载版本。    |- 带有一个参数的方法以 JPA 配置文件 persiste...

weixin_30894583的博客 92

浅谈JPA二:JPA与Hibernate关系

JPA &amp;amp;amp;amp;amp;amp; Hibernate 关系 JPA是需要Provider来实现其功能的,Hibernate就是JPA Provider中很强的一个。 从功能上来说,JPA现在就是Hibernate功能的一个子集。可以简单的理解为JPA是标准接口,Hibernate是实现及扩展。 Hibernate主要是通过三个组件来实现:hibernate-annotation、hibernate-entity......

localhost01 1777

SpringData专题(四)-JPA的API介绍

1.Persistence对象 Persistence 类是用于获取 EntityManagerFactory 实例。该类包含一个名为 createEntityManagerFactory 的 静态方法 。 createEntityManagerFactory 方法有如下两个重载版本。 带有一个参数的方法以 JPA 配置文件 persistence.xml 中的持久化单元名为参数 带有两个参数的...

专业的计算机毕业设计指南 670

JPA入门教程

JPA(Java Persistence API,Java持久化API) 一、什么是JPA 对象关系映射ORM(Object-Relation Mapping)是用来将对象和对象之间的关系对应到数据库中表与表之间的关系的一种模式。ORM框架能够将Java对象映射到关系数据库,能够直接持久化复杂的Java对象。ORM框架的出现,使开发者从数据库编程中解脱出来,把更多的精力放在了业务模型与业务

zhxtpray的专栏 823
上一篇: 最好的Java Web开发的书应该是什么样子?
下一篇: Java持久性API(JPA)第7讲——实体生命周期及生命周期回调方法
老李-大连
博客等级 码龄20年 3206粉丝 308原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值