简介
本节与JBOSS EAP 6.1(JBOSS AS7)关系不太大,怀着对JPA的热衷,简单介绍一些JPA/hibernate相关的零散内容。
一、 JPA与hibernate的关系
简单的知识普及:JPA是规范,hibernate是实现(虽然实现得稍微超越了规范)。自EntityBean从EJB的剥离便奠定了JPA规范的产生,到EJB3.0时代有了Annotation的支持JPA更是如日中天,这两个重大事件使的JPA彻底走出hibernate的阴影,拜托了类似ISO被TCP/IP完全忽略的命运。
二、 Anotation
自从EJB3.0之后Annotation巨大的提高了开发速度,强烈推荐Annotation。相关的文章很多,就不在此赘述了,推荐一文http://www.docin.com/p-504500504.html
三、 JPA/hibernate配置
以下是一段JBOSSEAP 6.1中的JPA/hibernate4(带容器级Transaction)的配置,仅供参考,
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/persistence" version="1.0">
<persistence-unit name="leo">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:jboss/datasource/OracleDS</jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />
</properties>
</persistence-unit>
</persistence>
……
<property name="hibernate.connection.datasource">java:jboss/datasource/OracleDS</property>
<property name="hibernate.session_factory_name">java:comp/hibernate_session_factory</property>
<property name="hibernate.current_session_context_class">jta</property>
<property name="hibernate.transaction.manager_lookup_class">
org.hibernate.transaction.JBossTransactionManagerLookup</property>
<property name="hibernate.transaction.factory_class">
org.hibernate.engine.transaction.internal.jta.CMTTransactionFactory</property>
<property name="hibernate.transaction.jta.platform">
org.hibernate.service.jta.platform.spi.JtaPlatform</property>
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="hibernate.show_sql">true</property>
……
四、 获得Hibernatesession factory
4.1 JPA方法
@PersistenceUnit(unitName="leo")
private SessionFactory sessionFactory;
4.2 JNDI查询
@Resource
private SessionContext sessionContext
sessionContext.lookup("java:comp/hibernate_session_factory");
小结
本文怀着对JPA的强烈推崇,对JPA/hibernate进行了一些简单的背景介绍,给了一个现成的JPA/hibernate配置文件,以及获得hibernate session factory的两种方法。