JPA on JBoss As 6.X or 7



我正试图找到如何做JPA项目(使用EJB 3.x)的良好参考。

我很难找到如何根据jBoss配置持久化单元。(在GlassFish中,这只是小菜一碟)。

是你们谁知道好的参考

我刚刚将我在NetBeans上开发的应用从Glassfish 3移植到JBoss 6。我不得不禁用JTA的持久性工作,但因为我不需要,目前有总比没有好。

我正在使用容器管理的安全性,并在本文中记录了我的配置。

我通过将mysql-ds.xml放入$JBOSS_HOMEserverdefaultdeploy来配置JBoss 6数据源。内容如下:

<datasources>
  <local-tx-datasource>
    <jndi-name>jdbc/thor_ds</jndi-name>
    <connection-url>jdbc:mysql://localhost:3306/thor</connection-url>
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <user-name>mjolnir</user-name>
    <password>mjolnir</password>
    <exception-sorter-class-name>
        org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter
    </exception-sorter-class-name>
    <metadata>
       <type-mapping>mySQL</type-mapping>
    </metadata>
  </local-tx-datasource>
</datasources>

与Glassfish不同的是,在JBoss 6中,我必须显式声明每个持久化类。这是我的Persistence XML:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" 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">
  <persistence-unit name="AvengersPU" transaction-type="RESOURCE_LOCAL">
      <!--<persistence-unit name="AvengersPU" transaction-type="JTA">-->
    <jta-data-source>java:/jdbc/thor_ds</jta-data-source>
    <non-jta-data-source>java:/jdbc/thor_ds</non-jta-data-source>
    <class>avenger.Grouptable</class>
    <class>avenger.MyUser</class>
    <exclude-unlisted-classes>true</exclude-unlisted-classes>
    <properties>
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
    </properties>
  </persistence-unit>
</persistence>

应用服务器之间在JPA方面没有区别。就像你为Glasfish做的一样。

唯一的区别是配置数据源-但有足够的谷歌结果。

配置完persistence.xml之后,您应该准备好了,因为JPA是Java EE标准,应该独立于应用服务器。

相关内容

最新更新