《Hibernate快速开始 – 4 – 使用JAVA持久层 API (JPA)教程》
章节目标
- 使用JPA EntityManagerFactory
- 使用注解提供映射信息
- 使用 JPA 接口
本教程可在 entitymanger/ 路径下下载
4.1. persistence.xml
之前的章节使用了hibernate原生的配置文件hibernate.cfg.xml。然而,JPA中定义了不同的的自助配置文件persistence.xml。这个启动过程在JPA文档里面有详细定义。在JAVA SE环境中,持久层的提供者(在此为hibernate)是根据路径MEATA-INF/persistence.xml找到所有JPA配置文件的前提。
案例 10. persistence.xml
[code lang=”java”]
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" version="2.0">
<persistence-unit name="org.hibernate.tutorial.jpa">
…
</persistence-unit>
</persistence>
[/code]
persistence.xml文件应为每个“persistent unit”提供一个唯一值。当程序得到javax.persistence.EntityManangerFactory的定义是要通过这个值去找到配置文件。
有关设置的定义已包括在Hibernate配置文件的章节中。 以javax.persistence为前缀的元素可在需要的时候使用。需要注意的是,其余的Hibernate相关的设置名称现在都以hibernate.为前缀。
另外,元素依旧与2.1.Hibernate配置文件的章节中描述的一样。
4.2. 注解过的实体类
这里的实体与2.1.Hibernate配置文件的章节中描述的一样
4.3. 代码实例
之前的教程使用的是hibernate原生接口,这个章节使用的是JPA接口
案例 11. 使用javax.persistence.EntityManagerFactory
[code lang=”java”]
protected void setUp() throws Exception {
sessionFactory = Persistence.createEntityManagerFactory( "org.hibernate.tutorial.jpa" );
}
[/code]
注意,此处的持久层名称“org.hibernate.tutorial.jpa”与persistence.xml中一致。
案例 12. 存储(有持久属性)实体
[code lang=”java”]
EntityManager entityManager = sessionFactory.createEntityManager();
entityManager.getTransaction().begin();
entityManager.persist( new Event( "Our very first event!", new Date() ) );
entityManager.persist( new Event( "A follow up event", new Date() ) );
entityManager.getTransaction().commit();
entityManager.close();
[/code]
代码与之前存储实体的章节中一样。javax.persistence.EntityManager接口替换了org.hibernate.Session接口。JPA中将这个操作称作“persist”,有别于“save”。
案例 13. 获得实体集合
[code lang=”java”]
entityManager = sessionFactory.createEntityManager();
entityManager.getTransaction().begin();
List<Event> result = entityManager.createQuery( "from Event", Event.class ).getResultList();
for ( Event event : result ) {
System.out.println( "Event (" + event.getDate() + ") : " + event.getTitle() );
}
entityManager.getTransaction().commit();
entityManager.close();
[/code]
此处代码与之前的获得实体集合相似。
4.4. 更进一步
练习
- 配置一个ELB Session Bean来研究容器管理持久层的用法,包括stateless和stateful两种情况。
- 用CDI为基础注入的监听器来配置一个JMS事件管理器。
原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 《Hibernate快速开始 – 4 – 使用JAVA持久层 API (JPA)教程》
暂无评论