快速业务通道

JPA的实体状态和API浅析 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14

JPA的实体状态和API浅析

时间:2011-10-28

实体对象拥有以下4个状态,这些状态通过调用EntityManager接口方法发生迁移:

新建态:新创建的实体对象,尚未拥有持久化主键,没有和一个持久化上下文关联起来。受控态:已 经拥有持久化主键并和持久化上下文建立了联系; 游离态:拥有持久化主键,但尚未和持久化上下文建 立联系; 删除态:拥有持久化主键,已经和持久化上下文建立联系,但已经被安排从数据库中删除。

EntityManager 的API

下面是EntityManager的一些主要的接口方法:

void persist(Object entity)

通过调用EntityManager的persist()方法,新实体实例将转换为受控状态。这意谓着当persist ()方 法所在的事务提交时,实体的数据将保存到数据库中。如果实体已经被持久化,那么调用persist()操作 不会发生任何事情。如果对一个已经删除的 实体调用persist()操作,删除态的实体又转变为受控态。如 果对游离状的实体执行persist()操作,将抛出 IllegalArgumentException。

在一个实体上调用persist()操作,将广播到和实体关联的实体上,执行相应的级联持久化操作;

void remove(Object entity)

通过调用remove()方法删除一个受控的实体。如果实体声明为级联删除(cascade=REMOVE 或者 cascade=ALL ),被关联的实体也会被删除。在一个新建状态的实体上调用remove()操作,将被忽略。如 果在游离实体上调用remove()操作,将抛出 IllegalArgumentException,相关的事务将回滚。如果在已 经删除的实体上执行remove()操作,也会被忽略;

void flush()

将受控态的实体数据同步到数据库中;

T merge(T entity)

将一个游离态的实体持久化到数据库中,并转换为受控态的实体;

T find(Class entityClass, Object primaryKey)

以主键查询实体对象,entityClass是实体的类,primaryKey是主键值,如以下的代码查询Topic实体 :

Topic t = em.find(Topic.class,1);

Query createQuery(String qlString)

根据JPA的查询语句创建一个查询对象Query,如下面的代码:

Query q= em.createQuery(""SELECT t FROM Topic t

WHERE t.topicTitle LIKE :topicTitle")");

Query createNativeQuery(String sqlString)

使用本地数据库的SQL语句创建一个Query对象,Query通过getResultList()方法执行查询后,返回一 个List结果集,每一行数据对应一个Vector。

Query

JPA使用javax.persistence.Query接口代表一个查询实例,Query实例由EntityManager通过指定查询 语句构建。该接口拥有众多执行数据查询的接口方法:

Object getSingleResult():执行SELECT查询语句,并返回一个结果;

List getResultList() :执行SELECT查询语句,并返回多个结果;

Query setParameter(int position, Object value):通过参数位置号绑定查询语句中的参数,如果 查询语句使用了命令参数,则可以使用Query setParameter(String name, Object value)方法绑定命名 参数;

Query setMaxResults(int maxResult):设置返回的最大结果数;

int executeUpdate():如果查询语句是新增、删除或更改的语句,通过该方法执行更新操作。

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