快速业务通道

EJB3 Persistence API标准化持久性 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
vate EntityManagerFactory emf; private EntityManager em = emf.createEntityManager();

然后可以使用EntityManager实例在实体上执行CRUD操作。要关闭应用程序管理实体管理器实例,请在完成工作后调用em.close()方法。

如前所述,必须在事务上下文中执行涉及任何数据库更改的实体管理器操作。

下表列出了EntityManager接口的一些用于执行实体操作的关键方法。

方法 用途
public void persist(Object entity); 持久化实体实例。
public <T> T merge(T entity); 合并分离的实体实例。
public void remove(Object entity); 移除实体实例。
public <T> T find(Class<T> entityClass, Object primaryKey); 通过主键检索实体实例。
public void flush(); 使实体状态与数据库同步。

可以使用persist()方法持久化实体实例。例如,如果想持久化Contractor实例,请使用以下代码:

@PersistenceContext(unitName="onjava") private EntityManager em; ... Contractor pte = new Contractor(); pte.setName("Nistha") pte.setHourlyRate(new Double(100.0)); em.persist(pte);

在持久化实体时,如果此关系的CascadeType被设置为PERSIST或ALL,则任何对关联实体的状态更改也将被持久化。除非正在使用扩展的持久上下文,否则实体将在事务终止后分离。合并操作允许将分离的实体实例与持久上下文合并;分离实体的状态将与数据库同步。这将有助于摆脱EJB 2.x中常见的数据传输对象(Data Transfer Object,DTO)反模式,因为作为POJO的实体可以在层与层之间传输。惟一的要求是实体类必须实现java.io.Serializable接口。

查询API

对实体的检索是持久性的一个重要方面。使用EJB3 JPA时,使用Java持久化查询语言(Java Persistence Query Language,JPQL)表示查询。JPQL是EJBQL的扩展,它是作为EJB 2.0规范的一部分而引入的。然而,EJB3 JPA解决了EJBQL的所有局限性,并添加了许多新特性,从而成为一种功能强大的查询语言。

EJB3 Persistence API标准化持久性(5)

时间:2010-12-31 bea Debu Panda

JPQL较之EJBQL 2.x的改进

以下是EJB3 JPA中的JPQL的新特性:

·简化了的查询语法

·JOIN操作

·Group By和Having Clause

·子查询

·动态查询

·指定参数(named parameter)

·批量更新和删除

此外,如果希望从特定于数据库的查询扩展中获益,则必须对查询实体使用原生(native ) SQL。

动态查询与指定查询

可以使用动态查询或指定查询(named query)。指定查询随实体存储,可从应用程序重用。

要创建动态查询,请使用实体管理器接口的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.setParame

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号