EJB-- EntityManger--整理

来源:互联网 发布:网络交友诈骗案例 编辑:程序博客网 时间:2024/05/29 03:00

   最近小编在看一些关于EJB的东西,发现EJB是一个门很有意思的技术,今天我想和大家聊聊EntityManger。在EJB中我们需要对Entity Bean操作(包括所有的query insert update delete操作)都需要EntityManger实例来实现。这样我们就差不多能够理解EntityManger了,他是一个对于实体操作的一个管理对象。了解EntityManager之前,我们需要先了解一下JPA规范。

  JPA:Java Persistence API 
  作用:通过JDK注解或XML描述对象--关系表的映射关系,将运行期的实体对象持久化到数据库中。
  EntityManager
  EntityManager作用是管理EntityBean,在对EntityBean进行操作的时候调用API实现对于实体的操作。
  EntityManager分类
  容器托管的EntityManager对象和应用托管的EntityManager对象
  容器托管:这里的EntityManager不需要程序员去管理,它交由容器管理,容器去控制它的释放和连接以及失误的复杂问题,这样就会简化程序员的工作,但是容器托管的EntityManager只能在EJB容器中运行。
  应用托管:程序员需要去管理它的释放、连接和控制事务,他可以在EJB中应用,也可以脱离EJB容器,在任何的Java环境中运行,所以这种管理方式风基础一些,它可以独立于EJB环境运行。
下面是应用托管的EntityManager对象和容器托管的EntityManager对象的对比:
种类应用托管的EntityManager容器托管的EntityManager获得方式JNDI获得 、EntityManagerFactory创建@PersistenceContex注入支持事务JTA RESOURCE_LOCALJTA运行环境web容器(t omcat ),EJB容器,J2SE环境EJB容器(JBoss)应用托管的EntityManager实现:
@Stateless(name="StudentManager")@Remotepublic class StudnetManagerImpl implements StudentManager{@PersistenceUnit(unitName="test")private EntityManagerFactory factory;public void addStudent(String name){EntityManager em= factory.createEntityManager();Student s= new Student();s.setName(name);        //实体持久化em.persist(s);em.close();}}
容器托管的EntityManager实现:
@Stateful@Remotepublic class StudnetManagerImpl implements StudentManager{@PersistenceContext(unitName="test",type=PersistenceContextType.EXTENDED)private EntityManager em;public void addStudent(Student student){        //实体持久化em.persist(student);em.close();}}

总结:
     关于EntityManager宏观上的一些理解是这些,我们出了这些理论性质的东西,还需要去实践,写一篇和大家分享一些关于EntityManager使用。

-------------------------------------有不准确的地方欢迎大家指正---------------------------------------

0 0
原创粉丝点击