- 1、本文档共16页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JPA基本概念和持久化的概念
EntityManager 1
基本概念 2
底层事务控制 3
Container-Managed Persistence Context 3
Application-Managed Persistence Context 4
实体对象的生命周期 4
EntityManager的接口方法 4
实体对象的监听器和回调方法 5
拦截器 6
EntityManager实例操作介绍 7
EJB3如何实现继承关系的映射? 7
如何注入EntityManager对象? 8
如何知道有哪些实体类?或哪些实体类将要被映射到数据库表? 8
如何由应用程序来管理EntityManager? 9
如何利用JTA实现跨越多个数据库的事务控制(一)? 9
如何利用JTA实现跨越多个数据库的事务控制(二)? 12
在声明式事务管理中,如何控制事务的回滚? 14
如何定义事务的传播特性? 15
如何监听实体对象的调用? 15
如何拦截session bean的方法调用? 16
EntityManager
基本概念
EntityManager称为实体管理器,它由EntityManagerFactory所创建。EntityManagerFactory,作为EntityManager的工厂,包含有当前O-R映射的元数据信息,每个EntityManagerFactory,可称为一个持久化单元(PersistenceUnit),每个持久化单元可认为是一个数据源的映射(所谓数据源,可理解为一个数据库,我们可以在应用服务器中配置多个数据源,同时使用不同的PersistenceUnit来映射这些数据源,从而能够很方便的实现跨越多个数据库之间的事务操作!)
PersistenceContext,称为持久化上下文,它一般包含有当前事务范围内的,被管理的实体对象(Entity)的数据。每个EntityManager,都会跟一个PersistenceContext相关联。PersistenceContext中存储的是实体对象的数据,而关系数据库中存储的是记录,EntityManager正是维护这种OR映射的中间者,它可以把数据从数据库中加载到PersistenceContext中,也可以把数据从PersistenceContext中持久化到数据库,EntityManager通过Persist、merge、remove、refresh、flush等操作来操纵PersistenceContext与数据库数据之间的同步!
EntityManager是应用程序操纵持久化数据的接口。它的作用与hibernate session类似。为了能够在一个请求周期中使用同一个session对象,在hibernate的解决方案中,提出了currentSession的概念,hibernate中的current session,可以跟JTA事务绑定,也可以跟当前线程绑定。在hibernate中,session管理着所有的持久化对象的数据。而在EJB3中,EntityManager管理着PersistenceContext,PersistenceContext正是被管理的持久化对象的集合。
在Java EE环境下,一个JTA事务通常会横跨多个组件的调用(比如多个EJB组件的方法调用)。这些组件需要能够在单个事务范围内访问到同样的Persistence Context。为了满足这种情况的需要,当EntityManager被注入或通过jndi被查询的时候,它的Persistence Context将会在当前事务范围内自动传播,引用到同一个Persistence unit的EntityManager将使用同样的Persistence Context。这可以避免在不同的组件之间传递EntityManager引用。
通过容器来传递PersistenceContext,而不是应用程序自己来传递EntityManager。这种方式(由容器管理着PersistenceContext,并负责传递到不同的EntityManager)称为容器管理的实体管理器(Container-Managed EntityManager),它的生命周期由容器负责管理。
有一种不常见的情况是,应用程序自身需要独立访问Persistence Context。即每次创建一个EntityManager都会迫使创建一个新的Persistence Context。这些Persistence Context即使在同一个事务范围内也不会跟其它EntityManager共享!这个创建过程可以由EntityManagerFactory的createEntityManager方法来创建。这被称为应用管理的实体管理器(application-m
您可能关注的文档
最近下载
- 辅助生殖分院重点学科建设汇报总结精品课件.pptx
- WPS办公应用1+X测试题3.pdf VIP
- 新能源智慧充电桩“光储充”一体化解决方案(37页 PPT).pptx VIP
- 【公司年会小品剧本】公司年会剧本三国无间道现代版.docx
- 【编程】python基础试题(含答案)练习.pdf VIP
- JT-T-978.4-2015城市公共交通IC卡技术规范第4部分:信息接口.docx VIP
- 安排和举办体育赛事行业影响因素分析.docx
- 2025年童话小故事集锦15篇 .pdf VIP
- 2025年内蒙古林草生态建设有限责任公司总部及子公司招聘笔试参考题库附带答案详解.pdf
- 人教版九年级物理下册课件(2024年春季版).pptx
文档评论(0)