码迷,mamicode.com
首页 > 其他好文 > 详细

EJB3 EntityBean中EntityManager的管理类型

时间:2015-12-28 23:37:06      阅读:451      评论:0      收藏:0      [点我收藏+]

标签:

EJB中EntityManager的管理方式有两种:Container-managed EntityManager和Application-managed EntityManager

即容器管理的EntityManager和应用管理的EntityManager

在EJB中,EntityManager所进行的持久化的方式与Hibernate的方式是不同的。

     1.在Hibernate的同一个事务中,通过getCurrentSession获取的session对象均为同一个,保存于threadlocal中,以保证对数据的操作为同一个对象。

     2.而EJB中,以容器管理的EntityManager为例,通过注解注入后,在同一个事物中,在各个Bean中获取的EntityManager为不同的对象,但其背后所指向的        persistenceContext  为同一个,所以保证对一个对象进行操作。

 

1)容器管理的EntityManager

    简单的说,就是使用注解,在程序启动的时候由容器自动注入的方式,这是一种普遍采用的方式。

@PersistenceContext(unitName="jbossDB")
    private EntityManager em;

     在使用结束时,不需要自己关闭,有容器来管理。unitName为数据库资源的名字,有presidence.xml中定义

     在该方式下,对应两种persistence类型:

     1.transaction-scope persistence:由容器管理的persistence,其生命周期为一个transaction,这是默认的模式

     2.Extended-scope persistence:用于stateful session bean中,其生命周期随stateful的生命周期

@PersistenceContext(unitName="jbossDB",type=PersistenceContextType.EXTENDED)
    private EntityManager em;

       其设置方式为通过PersistenceContextType来设置。

2)应用管理的EntityManager

    由PersistenceUnit注入EntityManagerFactory中

@PersistenceUnit(unitName="jbossDB")
    private EntityManagerFactory emf;

     在transaction结束时需要手动将获取的EntityManager关闭(closs);

 

***由于刚了解该技术点,没有理解透

EJB3 EntityBean中EntityManager的管理类型

标签:

原文地址:http://www.cnblogs.com/welv/p/5084329.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!