知识大全 EJB之JPA(EntityManager)
Posted 知
篇首语:花门楼前见秋草,岂能贫贱相看老。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 EJB之JPA(EntityManager)相关的知识,希望对你有一定的参考价值。
EJB之JPA(EntityManager) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
基本概念 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管理著所有的持久化对象的数据 而在EJB 中 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 managed entity manager) 底层事务控制 EntityManager的底层可以使用JTA或RESOURCE_LOCAL类型的事务控制策略 JTA一般在容器环境中使用 而RESOURCE_LOCAL一般在J SE的环境下使用 比如 在J SE的环境下 由应用程序自身来创建EntityManagerFactory 并由EntityManagerFactory创建EntityManager 通过EntityManager getTransaction begin()方法来开启事务 mit()方法提交事务等等 这种方式就是RESOURCE_LOCAL的基本使用方法 最常用的就是在容器环境下使用 也就是使用JTA类型的EntityManager 这样 EntityManager的调用都是在一个外部的JTA事务环境下进行的 Container Managed EntityManager必须是JTA类型的EntityManager 而Application Managed EntityManager则既可以是JTA类型的EntityManager 也可以是RESOURCE_LOCAL类型的EntityManager 配置示例 <persistence unit name= test transaction type= JTA > cha138/Article/program/Java/hx/201311/27196相关参考
EJB之JPA(UUID与TABLE影射策略) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!UUI
使用Eclipse开发JPA快速入门 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Eclips
Spring2.5中配置JPA 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 本文提供了一个简单
知识大全 学习JPA——Hibernate Annotation使用实例
学习JPA——HibernateAnnotation使用实例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看
Spring+JPA+MySQL的配置文件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一直在
MyEclipse6.0发布整合JPA框架 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Gen
知识大全 Eclipse整合JPA + Struts 2 +&nbs
Eclipse整合JPA+Struts2+&nbs 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
知识大全 Hibernate(jpa)复合主键annotation声明方法
Hibernate(jpa)复合主键annotation声明方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起
JPA和hibernate对删除操作的不同[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
JPA和hibernate对删除操作的不同[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!