EJB3 Persistence API标准化持久性 |
|
|
要创建动态查询,请使用实体管理器接口的createQuery方法,如下所示:
Query query = em.createQuery( "select e from Employee e where e.empNo > 1"); query.setParameter(1,100); return query.getResultList(); | 如果希望将此查询用作指定查询,请在实体中使用NamedQuery注释,如下所示:
@Entity @NamedQuery(name="findAllEmployee", query="select e from Employee e where e.empNo > 1") public abstract class Employee implements Serializable { } | 要执行指定查询,首先使用EntityManager接口上的createNamedQuery方法创建一个Query实例,如下所示:
query = em.createNamedQuery(" findAllEmployee"); query.setParameter(1,100); return query.getResultList(); | 指定参数
可以在EJBQL查询中使用指定参数(named parameter)代替位置参数(positional parameter)。例如,可以将以上查询重写如下:
"select e from Employee e where e.empNo > :empNo "
如果在查询中使用指定参数,则必须设置此参数如下:
query = em.createNamedQuery("findAllEmployee"); query.setParameter("empNo",100); return query.getResultList(); | 打包
EJB3 JPA标准化了POJO持久性。因此,实体并不局限于EJB模块;它们能够打包到Web模块、ejb-jar模块、EAR级中的库模块或标准jar文件中。也可以在Java SE中使用实体。必须在包含实体的档案文件中打包描述符(persistence.XML),如下所示:
<persistence> <persistence-unit name="onjava"> <provider>Oracle.toplink.essentials.PersistenceProvider</provider> <jta-data-source>JDBC/OracleDS</jta-data-source> ... </persistence-unit> </persistence> | 此描述符标识持久性提供程序、持久单元和持久单元所使用的数据源。正如其名称所暗示的,持久单元是集中管理的实体的集合。如果有一个定义在特定模块中的持久单元,就不需要在persistence.xml中标识实体类;它将由持久性提供程序动态发现。
参考实现
BEA Kodo以及Oracle TopLink的TopLink Essentials都提供了EJB3 JPA的参考实现。它可分别从Open JPA和GlassFish开源项目中得到。
您可以在参考实现服务器或其他任何服从EJB3 JPA的应用服务器上使用本文中的代码。
EJB3 JPA工具
开发工具确实能够帮助构建更好的应用程序,而如果使用XML实现O-R映射,情况可能就不太妙了。Eclipse Dali O-R映射项目,Oracle JDeveloper 10.1.3和BEA Workshop studio之类的工具都支持EJB3 JPA。
结束语
EJB3 Java Persistence API标准化了面向Java平台的持久性API。它通过使用元数据注释和异常配置方法,简化了透明持久性的使用。多种应用服务器已支持EJB3规范(编者注:BEA已经发布WebLogic Server EJB 3.0 Tech Preview )。随着Java EE 5.0和EJB 3.0规范的完成,您将很快看到许多一流的应用服务器和持久性提供程序会实现EJB3 Java Persistence API。您可以使用来自GlassFish项目的 参考实现 来启用EJB3 Persistence。上一页 [1] [2] [3] [4] [5] [6]
 【责编:Youping】 |
 |
|
|
|