欢迎来到天天文库
浏览记录
ID:33654914
大小:155.50 KB
页数:16页
时间:2019-02-28
《jpa基本概念和持久化的概念》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、EntityManager1基本概念2底层事务控制3Container-ManagedPersistenceContext3Application-ManagedPersistenceContext4实体对象的生命周期4EntityManager的接口方法4实体对象的监听器和回调方法5拦截器6EntityManager实例操作介绍7EJB3如何实现继承关系的映射?7如何注入EntityManager对象?8如何知道有哪些实体类?或哪些实体类将要被映射到数据库表?8如何由应用程序来管理EntityManager?9如何利用JTA实现跨越多
2、个数据库的事务控制(一)?9如何利用JTA实现跨越多个数据库的事务控制(二)?12在声明式事务管理中,如何控制事务的回滚?14如何定义事务的传播特性?15如何监听实体对象的调用?15如何拦截sessionbean的方法调用?16EntityManager基本概念EntityManager称为实体管理器,它由EntityManagerFactory所创建。EntityManagerFactory,作为EntityManager的工厂,包含有当前O-R映射的元数据信息,每个EntityManagerFactory,可称为一个持久化单元(Pe
3、rsistenceUnit),每个持久化单元可认为是一个数据源的映射(所谓数据源,可理解为一个数据库,我们可以在应用服务器中配置多个数据源,同时使用不同的PersistenceUnit来映射这些数据源,从而能够很方便的实现跨越多个数据库之间的事务操作!)PersistenceContext,称为持久化上下文,它一般包含有当前事务范围内的,被管理的实体对象(Entity)的数据。每个EntityManager,都会跟一个PersistenceContext相关联。PersistenceContext中存储的是实体对象的数据,而关系数据库中
4、存储的是记录,EntityManager正是维护这种OR映射的中间者,它可以把数据从数据库中加载到PersistenceContext中,也可以把数据从PersistenceContext中持久化到数据库,EntityManager通过Persist、merge、remove、refresh、flush等操作来操纵PersistenceContext与数据库数据之间的同步!EntityManager是应用程序操纵持久化数据的接口。它的作用与hibernatesession类似。为了能够在一个请求周期中使用同一个session对象,在hi
5、bernate的解决方案中,提出了currentSession的概念,hibernate中的currentsession,可以跟JTA事务绑定,也可以跟当前线程绑定。在hibernate中,session管理着所有的持久化对象的数据。而在EJB3中,EntityManager管理着PersistenceContext,PersistenceContext正是被管理的持久化对象的集合。在JavaEE环境下,一个JTA事务通常会横跨多个组件的调用(比如多个EJB组件的方法调用)。这些组件需要能够在单个事务范围内访问到同样的Persisten
6、ceContext。为了满足这种情况的需要,当EntityManager被注入或通过jndi被查询的时候,它的PersistenceContext将会在当前事务范围内自动传播,引用到同一个Persistenceunit的EntityManager将使用同样的PersistenceContext。这可以避免在不同的组件之间传递EntityManager引用。通过容器来传递PersistenceContext,而不是应用程序自己来传递EntityManager。这种方式(由容器管理着PersistenceContext,并负责传递到不同的E
7、ntityManager)称为容器管理的实体管理器(Container-ManagedEntityManager),它的生命周期由容器负责管理。有一种不常见的情况是,应用程序自身需要独立访问PersistenceContext。即每次创建一个EntityManager都会迫使创建一个新的PersistenceContext。这些PersistenceContext即使在同一个事务范围内也不会跟其它EntityManager共享!这个创建过程可以由EntityManagerFactory的createEntityManager方法来创建。
8、这被称为应用管理的实体管理器(application-managedentitymanager)。底层事务控制EntityManager的底层可以使用JTA或RESOURCE_LOCAL类型的事务控制策略。
此文档下载收益归作者所有