快速业务通道

使用Apache OpenJPA开发EJB 3.0应用,第8部分 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
发 OpenJPA 应用是一致的, 请读者参考本系列文章的 第 2 部分:第一个 OpenJPA 应用 的步骤完成,这里 不再赘述。

应用 SessinBean 封装对实体的访问

根据 EJB3.0 规范中对容器的要求来看,实体不能和 EJB2.X 规范中的实体一 样可以绑定到 JNDI,因此 EJB 容器外的 Java 代码无法直接访问实体,可选的 方法就是使用会话 Bean 封装实体的操作,Java 客户端通过 JNDI 访问会话 Bean,从而达到操作实体的目标。

在 EJB3.0 标准下,开发一个会话 Bean 非常简单,我们只需要定义业务接口 类,然后为该业务接口提供 @ javax.ejb.Remote、@javax.ejb.Local 这样的注 释,表明该会话 Bean 提供 Remote 接口或者 Local 接口,也可以为一个业务接 口同时提供 @ javax.ejb.Remote、@javax.ejb.Local 注释,表示该接口同时支 持 Remote、Local 接口。另外还需要提供会话 Bean 的实现类,它需要实现 Remote 接口、Local 接口其中一种或者同时实现两种接口。

使用Apache OpenJPA开发EJB 3.0应用,第8部分(5)

时间:2011-08-31 IBM 肖菁

演示例子中我们为定义了 Remote 接口 IAnimalDAO、Local 接口 ILocalAnimalDAO,它们都提供可以持久化 Animal 对象的 persistAnimal 方法 。然后创建接口的实现类 AnimalDAO,它实现了 IAnimalDAO 和 ILocalAnimalDAO 两个接口,也就是说,这个会话 Bean 能够同时支持 Remote、 Local 访问。

IAnimalDAO 接口的全部源代码如下 :

1.    package org.vivianj.jpademo; 2. 3.    import javax.ejb.Remote; 4. 5.    import org.vivianj.jpademo.beans.Animal; 6. 7.    @Remote 8.    public interface IAnimalDAO { 9.     public void persistAnimal(Animal animal); 10.   }

ILocalAnimal 接口类的全部源代码如下:

1.    package org.vivianj.jpademo; 2. 3.    import javax.ejb.Local; 4. 5.    import org.vivianj.jpademo.beans.Animal; 6. 7.    @Local 8.    public interface ILocalAnimalDAO { 9.     public void persistAnimal(Animal animal); 10.   }

AnimalDAO 实现类中实现了上面定义的两个接口 IAnimalDAO、 ILocalAnimalDAO,并且提供了基于 OpenJPA、Java EE 容器的实体访问实现代码 。实例中我们选择 @ javax.persistence.PersistenceContext 注释向会话 Bean 中注入 EntityManager 对象,根据实际需求的不同,还可以选择使用 @PersistenceUnit 注释向会话 Bean 中注入 EntityManagerFactory 对象。

AnimalDAO 中还使用了 javax.ejb.Stateless 注释,它用于声明当前的会话 Bean 是一个无状态的会话 Bean。

1.    package org.vivianj.jpademo; 2. 3.    import javax.ejb.Stateless; 4.    import javax.persistence.EntityManager; 5.    import javax.persistence.PersistenceContext; 6. 7.    import org.vivianj.jpademo.beans.Animal; 8. 9.    @Stateless 10.   public class AnimalDAO implements  IAnimalDAO,ILocalAnimalDAO { 11.    // 由 Java EE 容器向会话 Bean 中注入 EntityManager  对象 12.    @PersistenceContext 13.    EntityManager em; 14. 15.    public void persistAnimal(Animal animal) { 16.      /* 由于 EntityManager 的事务已经委托给 Java EE  容器的 JTA 事务,因此 17.      * 这里直接持久化实体 , 不再需要使用 begin()、 commit() 显式的处理实体 18.     * 操作时候的事务 19.     */ 20.      em.persist(animal); 21.    }

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号