ejb 多数据库操作

本文介绍了一种使用EJB实现跨两个不同数据库(test01和test02)操作的方法。通过配置不同的数据源和使用@PersistenceContext注解指定每个EntityManager实例对应的持久化单元名称,实现了在一个EJB组件中同时操作多个数据库。
ejb 多数据库操作

2012-05-07 18:06:18| 分类: j2ee |字号 订阅
<?xml version="1.0" encoding="UTF-8"?>

<!-- $Id: mysql-ds.xml 88948 2009-05-15 14:09:08Z jesper.pedersen $ -->
<!-- Datasource config for MySQL using 3.0.9 available from:
http://www.mysql.com/downloads/api-jdbc-stable.html
-->

<datasources>
<xa-datasource>
<jndi-name>mysqlds01</jndi-name>
<track-connection-by-tx>true</track-connection-by-tx>
<xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
<xa-datasource-property name="ServerName">127.0.0.1</xa-datasource-property>
<xa-datasource-property name="DatabaseName">test01</xa-datasource-property>
<xa-datasource-property name="User">root</xa-datasource-property>
<xa-datasource-property name="Password">xinhua</xa-datasource-property>
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</xa-datasource>


<xa-datasource>
<jndi-name>mysqlds02</jndi-name>
<track-connection-by-tx>true</track-connection-by-tx>
<xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
<xa-datasource-property name="ServerName">127.0.0.1</xa-datasource-property>
<xa-datasource-property name="DatabaseName">test02</xa-datasource-property>
<xa-datasource-property name="User">root</xa-datasource-property>
<xa-datasource-property name="Password">xinhua</xa-datasource-property>
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</xa-datasource>
</datasources>


@Stateless(name="sm")
@Remote
public class StudentManagerBean implements StudentManager {

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

@PersistenceContext(unitName="test02")
private EntityManager em1;

public void addStudent(String name) {

User u = new User();
u.setName(name);
em.persist(u);

Person p = new Person();
p.setName(name + "01");
em1.persist(p);
//throw new RuntimeException("oh no!");
}

}


<?xml version="1.0" encoding="UTF-8"?>
<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_1_0.xsd"
version="1.0">
<persistence-unit name="test01" transaction-type="JTA">
<jta-data-source>java:/mysqlds01</jta-data-source>
<class>com.huazhen.jpa.User</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="hibernate.hbm2ddl.auto" value="create" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
</properties>
</persistence-unit>

<persistence-unit name="test02" transaction-type="JTA">
<jta-data-source>java:/mysqlds02</jta-data-source>
<class>com.huazhen.jpa.Person</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="hibernate.hbm2ddl.auto" value="create" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
</properties>
</persistence-unit>
</persistence>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值