最近小编在看一些关于EJB的东西,发现EJB是一个门很有意思的技术,今天我想和大家聊聊EntityManger。在EJB中我们需要对Entity Bean操作(包括所有的query insert update delete操作)都需要EntityManger实例来实现。这样我们就差不多能够理解EntityManger了,他是一个对于实体操作的一个管理对象。了解EntityManager之前,我们需要先了解一下JPA规范。
种类 | 应用托管的EntityManager | 容器托管的EntityManager |
获得方式 | JNDI获得 、EntityManagerFactory创建 | @PersistenceContex注入 |
支持事务 | JTA RESOURCE_LOCAL | JTA |
运行环境 | web容器(t omcat ),EJB容器,J2SE环境 | EJB容器(JBoss) |
@Stateless(name="StudentManager") @Remote public 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 @Remote public class StudnetManagerImpl implements StudentManager{ @PersistenceContext(unitName="test",type=PersistenceContextType.EXTENDED) private EntityManager em; public void addStudent(Student student){ //实体持久化 em.persist(student); em.close(); } }