查看文章
 
JPA 小结2
2009-10-13 19:34

Lob字段

@Entity(name = "T_POST")

public class Post implements Serializable {

    @Lob

    //JPA通过@Lob将属性标注为Lob类型

    @Basic(fetch = FetchType.EAGER)

    //通过@Basic指定Lob类型数据的获取策略,FetchType.EAGER表示非延迟加载

    @Column(name = "POST_TEXT", columnDefinition = "LONGTEXT NOT NULL")

    //postText属性对应T_POST表的POST_TEXT字段,该字段的类型是LONGTEXT,非空

    private String postText;

    @Lob

    @Column(name = "POST_ATTACH", columnDefinition = "BLOB")

    //通过@ColumncolumnDefinition指定数据表对应的Lob字段类型

    @Basic(fetch = FetchType.LAZY)

    //FetchType.LAZY表示延迟加载

    private byte[] postAttach;

}

关于XML元数据

按照JPA的规范,如果你提供了XML元数据描述信息,它将覆盖实体类中的注解元数据信息,XML元数据以orm.xml

命名,放置在类路径的META-INF目录下

JPA重要API

JPA接口位于javax.persistencejavax.persistence.spi两个包中,javax.persistence包中大部分API都是注解类、EntityManagerQuery等持久化操作接口。而javax.persistence.spi包中的4API,是JPA的服务层接口

EntityManager

实体对象由实体管理器进行管理,通过EntityManager和持久化上下文进行交互

实体管理器有两种:

    容器类:容器型的实体管理器由容器负责试题管理器之间的协作,Java EE应用服务器提供的就是管理型的实体管理器。

    应用程序型:实体管理器的生命周期由应用程序控制,应用程序通过javax.persistence.EntityManagerFactotycreaeEntityManager创建EntityManager实例

实体的状态

实体共有4种状态:

1、 新建态:新创建的实体对象,尚未拥有持久化主键,没有和一个持久化上下文关联起来

2、   受控态:已经拥有持久化主键和持久化上下文建立了联系

3、   游离态:拥有持久化主键,但尚未和持久化上下文建立联系

4、   删除态:拥有持久化主键,已经和持久化上下文建立了联系,但已经被安排从数据库中删除

EntityManagerAPI

void persist(Object entity)

通过persist方法,新实体实例将转换为受控状态,就是说,当persist()方法所在的事务提交时,实体的数据保存到数据库中。

如果实体已经被持久化,那么调用persist()方法不会发生任何事情。

如果对一个已经删除的实体调用persist()方法,删除态的实体又转变为受控态

如果对游离状态的实体执行persist()操作,抛出IllegalArgumentException

一个实体调用persist()方法后,所有与之关联的实体,都将执行持久化操作

void remove(Object entity)

删除一个受控态的实体。

如果实体声明为级联删除(cascade=REMOVE或者cascade=ALL),被关联的实体也会被删除

在一个新建态或删除态的实体上调用remove()方法,将被忽略

在游离态的实体上调用remove()方法,将抛出IllegalArgumentException,相关事务将回滚

void flush()

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

T merge(T entity)

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

T find(Class entityClass.Object primaryKey)

以主键查询实体对象,entityClass是实体的类,primaryKey是主键值

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


类别:Java Ee||添加到搜藏 |分享到i贴吧|浏览(168)|评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
     

   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu