已项目 intelligence 为例;
1. intelligence-dev-ds.xml 定义两个数据库连接 分别连接不同的数据库
<local-tx-datasource>
<jndi-name>intelligenceDatasource</jndi-name>
<use-java-context>false</use-java-context>
<connection-url>jdbc:oracle:thin:@192.168.1.xx:1521:orcl</connection-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<user-name>GB_xx</user-name>
<password>xxx</password>
</local-tx-datasource>
<local-tx-datasource>
<jndi-name>gisDatasource</jndi-name>
<use-java-context>false</use-java-context>
<connection-url>jdbc:oracle:thin:@192.168.1.xx:1521:xe</connection-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<user-name>gis_xx</user-name>
<password>xx</password>
</local-tx-datasource>
2.persistence-dev.xml
<persistence-unit name="intelligence" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>intelligenceDatasource</jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>
<property name="hibernate.hbm2ddl.auto" value="none"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup"/>
<property name="hibernate.default_schema" value="GB_xx"/>
<property name="jboss.entity.manager.factory.jndi.name" value="java:/intelligenceEntityManagerFactory"/>
<property name="hibernate.search.default.directory_provider" value="org.hibernate.search.store.FSDirectoryProvider" />
<property name="hibernate.search.default.indexBase" value="D:/JavaWork" />
<property name="hibernate.ejb.event.post-insert" value="org.hibernate.search.event.FullTextIndexEventListener" />
<property name="hibernate.ejb.event.post-update" value="org.hibernate.search.event.FullTextIndexEventListener" />
<property name="hibernate.ejb.event.post-delete" value="org.hibernate.search.event.FullTextIndexEventListener" />
</properties>
</persistence-unit>
<persistence-unit name="gis" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>gisDatasource</jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>
<property name="hibernate.hbm2ddl.auto" value="none"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup"/>
<property name="jboss.entity.manager.factory.jndi.name" value="java:/gisEntityManagerFactory"/>
<property name="hibernate.search.default.directory_provider" value="org.hibernate.search.store.FSDirectoryProvider" />
<property name="hibernate.search.default.indexBase" value="D:/JavaWork" />
<property name="hibernate.ejb.event.post-insert" value="org.hibernate.search.event.FullTextIndexEventListener" />
<property name="hibernate.ejb.event.post-update" value="org.hibernate.search.event.FullTextIndexEventListener" />
<property name="hibernate.ejb.event.post-delete" value="org.hibernate.search.event.FullTextIndexEventListener" />
</properties>
</persistence-unit>
3.components.xml
<persistence:entity-manager-factory name="intelligenceEntityManagerFactory" persistence-unit-name="intelligence"/>
<persistence:entity-manager-factory name="gisEntityManagerFactory" persistence-unit-name="gis"/>
<persistence:managed-persistence-context name="entityManager" auto-create="true"
persistence-unit-jndi-name="java:/intelligenceEntityManagerFactory"/>
<persistence:managed-persistence-context name="gisEntityManager" auto-create="true"
persistence-unit-jndi-name="java:/gisEntityManagerFactory"/>
4.使用
EntityManager em = (EntityManager) Component.getInstance("gisEntityManager");
或者:
@In
EntityManager gisEntityManager;
5.实体类需要增加@Table(name = "test",schema=“数据库名”)