JPA EntityManager详解

1.   持久化上下文(Persistence Context)

Ø 一个持久化单元(Persistence Unit)就是关于一组Entity类的命名配置。持久化单元是一个静态的概念。
Ø 一个持久化上下文(Persistence Context)就是一个受管的Entity实例的集合。每一个持久化上下文都关联一个持久化单元,持久化上下文不可能脱离持久化单元独立存在。持久化上下文中的Entity实例就是相关联的持久化单元中的若干Entity的实例。持久化上下文是一个动态的概念。
Ø 一个Entity实例处于受管状态,其实质是:该实例存在于某个持久化上下文中,并且可能被某个EntityManager处理,也因为这个原因,所以我们说一个EntityManager管理一个持久化上下文。
Ø 尽管持久化上下文非常重要,但是开发者不直接与之打交道,持久化上下文在应用程序中是透明的,我们需要通过EntityManager间接管理它。

2.   容器管理的EntityManager(Container-Managed EntityManager)

Ø 通过将@PersistenceContext注解标注在EntityManager类型的字段上,这样得到的EntityManager就是容器管理的EntityManager。由于是容器管理的,所以我们不需要也不应该显式关闭注入的EntityManager实例。
Ø 容器管理的EntityManager又细分为两种类型:事务范围(Transaction)的和扩展的(Extended)。
Ø 若@PersistenceContext未指定type属性,或者指定为PersistenContextType.TRANSACTION,则表示该EntityManager是事务范围的;若指定为PersistenContextType.EXTENDED的,则表示该EntityManager是扩展的。
Ø 事务范围:事务范围的EntityManager是无状态的,可用在无状态会话Bean和有状态会话Bean中。
ü 事务范围的EntityManager依赖于JTA事务,每次调用EntityManager实例的相关方法时,EntityManager会查看是否有某个持久化上下文与当前事务关联,如果有,则使用该持久化上下文;如果没有,则EntityManager将创建一个持久化上下文,并将该持久化上下文与当前事务关联。当事务结束,则持久化上下文消失。
Ø 扩展的:扩展的EntityManager只能用于有状态会话Bean。
ü 扩展的EntityManager在有状态会话Bean实例创建的时候创建一个持久化上下文,并且直到该有状态会话Bean销毁,则相应的持久化上下文才被移除。
ü 由于在扩展的EntityManager中,每次方法调用都是使用的相同的持久化上下文,所以前一次方法调用时产生的受管实体在下一个方法访问时仍然为受管实体。

转载于:https://blog.51cto.com/77857/158996

JPA EntityManager详解相关推荐

  1. JPA+MySQL详解

    JPA+MySQL详解 首先明确两个端的关联关系,在java实体类定义中,含有mappedBy属性的时关系被维护端,含有关联字段的是关系维护端. 一.OneToOne关联关系 假设有实体People和 ...

  2. jpa 托管_JPA EntityManager详解(一)

    持久化上下文(Persistence Contexts)的相关知识,内容包括如何从Java EE容器中创建EntityManager对象.如何从Java SE中创建EntityManager对象.持久 ...

  3. jpa 定义中间表实体_Spring Data JPA实体详解

    1. Spring Data JPA实体概述 JPA提供了一种简单高效的方式来管理Java对象(POJO)到关系数据库的映射,此类Java对象称为JPA实体或简称实体.实体通常与底层数据库中的单个关系 ...

  4. spring data jpa使用详解(推荐)

    使用Spring data JPA开发已经有一段时间了,这期间学习了一些东西,也遇到了一些问题,在这里和大家分享一下. 前言: Spring data简介: Spring Data是一个用于简化数据库 ...

  5. spring data jpa使用详解

    Spring data简介: Spring Data是一个用于简化数据库访问,并支持云服务的开源框架.其主要目标是使得对数据的访问变得方便快捷,并支持map-reduce框架和云计算数据服务. Spr ...

  6. Spring data JPA使用详解(超详细)

    目录 Jpa 元模型 Criteria查询 CriteriaBuilder 安全查询创建工厂 CriteriaQuery 安全查询主语句 Root Predicate 过滤条件 Predicate 多 ...

  7. Jpa使用详解(Hibernate)

    ​​​​​​​1. JPA简介 JPA 可以通过实体类生成数据库的表,同时自带很多增删改查方法,大部分sql语句不需要我们自己写,配置完成后直接调用方法即可,很方便. 概念: JPA顾名思义就是Jav ...

  8. Spring Data JPA用法详解

    Spring Data JPA: JPA(Java Persistence API)即java持久化API,它的出现主要是为了简化持久层开发以及整合ORM技术,结束Hibernate.TopLink. ...

  9. JPA学习 —— 第五课、JPA常用API详解

    实体状态和转换 JPA提供一个持久化上下文作为一级缓存,提供自动脏检查.对应某个id的实例在持久化上下文中只有一个对象. 查询时总是尝试在当前上下文中先搜索对象,不存在再触发数据库查询. 托管状态的b ...

最新文章

  1. golang:1.并发编程之互斥锁、读写锁详解
  2. 详解Android实现全屏正确方法
  3. 10.线程池与连接池
  4. 广东工业大学计算机学院研究生招生,蔡瑞初-广东工业大学研究生招生信息网...
  5. 锁Lock,主要是重入锁和读写锁
  6. 根文件系统移植之使用busybox
  7. 技术小故事-Activity的Launch Mode引起的动画“疑案”
  8. 无人机送货新方式?只为解决“最后一公里”
  9. java actionsupport_【JAVA学习】struts2 中 Actionsupport 的作用
  10. 怎么用计算机算加权平均数,教你如何制作加权平均分计算器
  11. Digispark ATtiny85 单片机点灯大师之圣诞节彩灯Merry Christmas
  12. Jenkins项目配置-Nodejs项目(Vue框架)-全面
  13. sincerit 小乐乐切割方块(规律+思考)
  14. WINDOW -- 给硬盘分盘以及合盘
  15. 计算机数据采集管理系统的结构和功能,生产数据采集系统结构、功能及特点
  16. 微信小程序~textarea字数限制与计算
  17. Python:Turtle图形绘制
  18. minMaxLoc opencv
  19. onclick事件在苹果手机上失效
  20. Eureka的健康检查

热门文章

  1. web站点放入html页面,HTML
  2. 一体化系统中心服务器,数据中心一体化:监测与控制
  3. ObjectFactory对象工厂类
  4. java面试题二十一 异常
  5. dos debug命令
  6. 字符串匹配的Boyer-Moore算法
  7. java图像处理之幂律变换
  8. 查找列表元素的最大最小值(python)
  9. libc glibc glib 的关系
  10. python学习笔记(三)tuple(元组)