首页 | 互联网 | IT动态 | 网络设备 | 服务器 | IDC | 安全 | Cisco | Windows | Linux | Java | .Net | Oracle | CIW | 华为 | 专题
IT技术 | 网页设计 | 平面设计 | 电子书下载 | 教学视频 | 方案 | 数字网校 | 直播室 | 虚拟考场 | 面授培训 | 搜索 | 博客 | 沙龙 | 论坛
首页 | JAVA | C# | VB | VB.NET | C/C++ | delphi | 工程管理 | 其他语言 | 论坛
免费注册一站通帐号,参与直播、论坛、下载、博客、网摘、评论,展现我的风采!
您现在的位置: 中国IT实验室 >> 桌面开发 >> 其他语言 >> 文章正文
EJB3 Persistence API标准化持久性
来源:中国IT实验室收集整理  时间:2007-6-21



  可以使用PersistenceContext注入获取容器管理实体管理器实例,如下所示:

@PersistenceContext(unitName="onjava")
private EntityManager em;

  如果使用应用程序管理的实体管理器,则必须管理其生命周期。可以创建一个应用程序管理实体管理器实例,如下所示:

@PersistenceUnit(unitName="onjava")
private 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的所有局限性,并添加了许多新特性,从而成为一种功能强大的查询语言。

  JPQL较之EJBQL 2.x的改进

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

  ·简化了的查询语法

  ·JOIN操作

  ·Group By和Having Clause

  ·子查询

  ·动态查询

  ·指定参数(named parameter)

  ·批量更新和删除

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

  动态查询与指定查询

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

上一页  [1] [2] [3] [4] [5] [6] 下一页  

【责编:Youping】

中国IT教育热线咨询

相关文章
没有相关文章
推荐文章
· 用C#创建COM对象
· IT管理十大失误及其对策
· VC中利用MFC设计绘图程序初步
· JAVA中对象创建和初始化过程
· C语言中的位域的使用
· 浅谈Java桌面应用程序开发
· C#的前途如何?
· 几种VC++数据库开发技术的相对比较
 精彩友情推荐
·锐捷交换机报价
·锐捷交换机
·锐捷网络网络交换机
·smc交换机
·smc交换机报价
·IDC资讯大全
·机房品质万里行
·IDC托管必备知识
·全国IDC报价
·网站推广优化
最新更新 推荐文章
·Visual Basic 9.0隐式类型的局部…09-30
·JMX+J2SE5.0实现Web应用的安全管…09-30
·多线程、Socket技术及委托技术的…09-21
·Visual C#多线程参数传递浅析09-21
·浅谈Java中利用JCOM实现仿Excel编…09-21
·基于Java的界面布局DSL的设计与实…09-21
·Java开发中的事件驱动模型实例详…09-21
·并发工程原则应用到软件项目中09-06
·Delphi初学者应小心的六大陷阱09-06
·VC开发多语言界面支持的简单方法09-06
·用C#创建COM对象09-06
·用C#创建COM对象09-06
·IT管理十大失误及其对策08-30
·VC中利用MFC设计绘图程序初步08-23
·JAVA中对象创建和初始化过程08-23
·C语言中的位域的使用08-09
·浅谈Java桌面应用程序开发08-09
·C#的前途如何?08-02
·几种VC++数据库开发技术的相对比较07-12
·用Visual C#实现网络封包监视07-12
·VB.NET中的TextBox控件详解07-12
·VB.NET实现PC与掌上电脑PPC的双向通信07-05
  培训中心