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

目标:掌握实体管理器和实体管理器工厂的使用。
主要内容:
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 阅读详情

相关推荐

Floyd算法在社交网络中的应用:如何找到六度人脉的最短路径?

本文探讨了Floyd算法在社交网络分析中的核心应用,特别是如何利用该算法高效计算任意两人之间的最短路径,从而量化“六度人脉”理论。文章通过构建微型社交网络模型,详细拆解了Floyd算法的动态规划原理与代码实现,并展示了如何从计算出的最短路径距离矩阵中挖掘节点中心性、识别社群等关键洞察,为社交推荐、影响力分析等场景提供技术支撑。

blockchain9miner的博客 1003

报错异常: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

Ferry工单平台部署

ferry工单平台部署

运维求生之路 1897

JPA - Persistence与EntityManagerFactory简解

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

小小默:进无止境 1万+

CentOS7安装openGauss5.0.2LTS版本

该文档要根据自己的实际情况调整ip地址。要根据自己的实际网卡调整。

superhanyubo的专栏 2579

【卫星语音通信】神经网络语音编解码算法:AudioDec

最新研究表明,通过深度学习模型对语音信号进行智能压缩与重建,可在12 kbps码率下实现48 kHz采样率的高保真语音还原,其主观音质评分(MOS)可达3.9分(满分4.27分),远超传统参数编码技术。这意味着未来卫星电话的通话质量有望达到CD级水准,而蜂窝网络的语音业务带宽需求可降低60%以上,为蜂窝和卫星网络中的大规模物联网语音交互铺平道路。它的诞生为神经音频编解码技术带来了一次重要升级,有助于让未来实时语音交互更流畅、更清晰,也让我们进一步体验到人工智能与音频信号处理结合所带来的创新可能性。

u011376987的博客 1473

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万+

华为昇腾Ascend C中级认证考试-tanh

注册昇腾社区账号后可以免费领券考试。

2600_96284887的博客 474

jpa 托管_JPA 实体管理器

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

weixin_39993322的博客 386

PADS Layout中快速导入自定义元器件封装的实用技巧

本文详细介绍了在PADS Layout中高效导入自定义元器件封装的实用技巧。针对封装“找不到”、“对不上”、“导不进”三大痛点,系统梳理了从封装文件来源识别、库规划管理,到三种核心导入场景(从库文件添加、从其他设计借用、处理第三方格式)的完整操作流程,并提供了导入后的关键验证清单与常见问题排查方法,旨在帮助硬件工程师快速掌握这一提升设计效率的关键技能。

weixin_29302047的博客 375

手把手教你用AirSim和Unreal4在Ubuntu上创建自定义无人机仿真场景

本指南详细介绍了如何在Ubuntu系统上使用AirSim和Unreal Engine 4搭建高精度无人机仿真环境。从硬件配置、驱动安装到Unreal Engine编译和AirSim集成,手把手教你创建自定义场景,适用于算法验证和开发测试。

y7z8a的博客 258

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

Pinocchio 安装教程|机器人学的必备库

安装pinocchio,不要安装pip3 install pinocchio!

darcsdn 1662

JPA入门教程【转】

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

weixin_34205826的博客 534

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

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二: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

JPA-API

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

weixin_30894583的博客 92

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

JPA架构

JPA(Java持久性API)是存储业务实体关联的实体的来源。它显示了如何定义一个面向普通Java对象(POJO)作为一个实体,以及如何与管理关系实体。 类级别架构 下图显示了JPA的类的层次结构。它显示核心类和JPA接口。 下表描述了每个在上述架构的显示单元。 单元 描述 EntityManagerFactory 这是一个Enti

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值