EJB-- EntityManger--整理

本文详细介绍了Java Persistence API中的EntityManager概念,探讨其在实体Bean操作中的角色,包括应用托管与容器托管的区别及其实现方式。

   最近小编在看一些关于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_LOCAL JTA
运行环境 web容器(t omcat ),EJB容器,J2SE环境 EJB容器(JBoss)
应用托管的EntityManager实现:
@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();
	}
}

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

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

评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值