EJB3 Persistence API标准化持久性 - 编程入门网
vate EntityManagerFactory emf;
private EntityManager em = emf.createEntityManager();
然后可以使用EntityManager实例在实体上执行CRUD操作。要关闭应用程序管理实体管理器实例,请在完成工作后调用em.close()方法。 如前所述,必须在事务上下文中执行涉及任何数据库更改的实体管理器操作。 下表列出了EntityManager接口的一些用于执行实体操作的关键方法。
可以使用persist()方法持久化实体实例。例如,如果想持久化Contractor实例,请使用以下代码:
在持久化实体时,如果此关系的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 PandaJPQL较之EJBQL 2.x的改进 以下是EJB3 JPA中的JPQL的新特性: ·简化了的查询语法 ·JOIN操作 ·Group By和Having Clause ·子查询 ·动态查询 ·指定参数(named parameter) ·批量更新和删除 此外,如果希望从特定于数据库的查询扩展中获益,则必须对查询实体使用原生(native ) SQL。 动态查询与指定查询 可以使用动态查询或指定查询(named query)。指定查询随实体存储,可从应用程序重用。 要创建动态查询,请使用实体管理器接口的createQuery方法,如下所示:
如果希望将此查询用作指定查询,请在实体中使用NamedQuery注释,如下所示:
要执行指定查询,首先使用EntityManager接口上的createNamedQuery方法创建一个Query实例,如下所示:
|
||||||||||||
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |