was下jpa配置多个数据源 more datasource

本文介绍了在WebSphere Application Server(WAS)中,使用JPA配置多个数据源的详细步骤。通过在persistence.xml文件中定义不同的<persistence-unit>,分别配置了TODS和TADS两个数据源,并提供了相关的JTA数据源和实体类。在代码中,通过@PersistenceContext注解指定期望的数据源单元名来访问不同数据库。这为在WAS环境下管理多数据库提供了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jpa 下配置多个数据源 ,可以依据jpa的规范,在persistence.xml 里面配置多个<persistence-unit>,

 

当然,persistence-unit的名字不能重复:

 

<persistence-unit name="TODS"  transaction-type="JTA">
        <provider>
            org.apache.openjpa.persistence.PersistenceProviderImpl
        </provider>
        <jta-data-source>jdbc/TODS</jta-data-source>
        <class>com.ibm.its.itmc.entity.Zone</class>
        <exclude-unlisted-classes>true</exclude-unlisted-classes>
        <properties>
          <property name="openjpa.jdbc.Schema" value="TODS" />      
          <property name="openjpa.jdbc.DBDictionary" value="db2" />      
          <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
          <property name="openjpa.Log" value="DefaultLevel=WARN, Tool=INFO"/>
        </properties>
    </persistence-unit>
   
    <persistence-unit name="TADS" transaction-type="JTA">
        <provider>
            org.apache.openjpa.persistence.PersistenceProviderImpl
        </provider>
        <jta-data-source>jdbc/testVD</jta-data-source>
        <class>com.ibm.its.itmc.entity.TadsZone</class>
        <class>com.ibm.its.itmc.entity.TadsRoad</class>
        <exclude-unlisted-classes>true</exclude-unlisted-classes>       
        <properties>
          <property name="openjpa.jdbc.Schema" value="db2admin" />      
          <property name="openjpa.jdbc.DBDictionary" value="db2" />      
          <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
          <property name="openjpa.Log" value="DefaultLevel=WARN, Tool=INFO"/>
        </properties>
    </persistence-unit>

 

当然也可以配置更多的数据源,我这里只配了两个。

 

在调用的时候,只要指定不同的unit-name给jpa的EntityManager就可以了:

 

@PersistenceContext(unitName="TADS")
    private EntityManager em;

或者

@PersistenceContext(unitName="TODS")
    private EntityManager em;

 

然后通过em就可以访问不同的数据源下面的实体了。至于orm.xml不用修改,注意一定是unitName, 而不是name,

如果只是一个数据源,写name就能默认找到datasource , 但是多个数据源不配置@PersistenceContext(unitName="TADS")

而只写@PersistenceContext(name="TADS"), 会报TODS can not resolve. 的错误。

 

这只是在was下面使用jpa的经验,希望能带给你些提示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值