第一次使用jta事务,使用的服务器为jboss5。代码如下 :
hibernate1.cfg.xml
hibernate2.cfg.xml
测试代码:
执行结果:
没有insert语句,数据库也没有结果。
那位同学帮忙看下原因。
BTW:表是innodb的
hibernate1.cfg.xml
<session-factory>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="connection.url">
jdbc:mysql://127.0.0.1:3306/hibernate1
</property>
<property name="connection.username">root</property>
<property name="connection.password"></property>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="transaction.factory_class">
org.hibernate.transaction.JTATransactionFactory
</property>
<property name="jta.UserTransaction">java:comp/UserTransaction</property>
<property name="hibernate.transaction.manager_lookup_class">
org.hibernate.transaction.JBossTransactionManagerLookup
</property>
<property name="show_sql">true</property>
<mapping resource="com/hibernate/domain/Person.hbm.xml" />
</session-factory>
hibernate2.cfg.xml
<session-factory>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="connection.url">
jdbc:mysql://127.0.0.1:3306/hibernate2
</property>
<property name="connection.username">root</property>
<property name="connection.password"></property>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="transaction.factory_class">
org.hibernate.transaction.JTATransactionFactory
</property>
<property name="jta.UserTransaction">java:comp/UserTransaction</property>
<property name="hibernate.transaction.manager_lookup_class">
org.hibernate.transaction.JBossTransactionManagerLookup
</property>
<property name="show_sql">true</property>
<mapping resource="com/hibernate/domain/User.hbm.xml" />
</session-factory>
测试代码:
UserTransaction ut = null;
SessionFactory sf1 = new Configuration().configure(
"hibernate_db1.cfg.xml").buildSessionFactory();
SessionFactory sf2 = new Configuration().configure(
"hibernate_db2.cfg.xml").buildSessionFactory();
try {
Context context = new InitialContext();
ut = (UserTransaction) context.lookup("java:comp/UserTransaction");
} catch (NamingException e) {
e.printStackTrace();
}
try {
ut.begin();
Session s1 = sf1.openSession();
s1.save(p);
s1.close();
Session s2 = sf2.openSession();
s2.save(u);
// 查询
User user = (User) s2.get(User.class, 44);
System.out.println("name=" + user.getName());
s2.close();
ut.commit();
} catch (Exception e) {
e.printStackTrace();
}
执行结果:
10:37:30,250 INFO [STDOUT] Hibernate: select user0_.id as id2_0_, user0_.name as name2_0_ from user user0_ where user0_.id=?
10:37:30,328 INFO [STDOUT] name=小明
没有insert语句,数据库也没有结果。
那位同学帮忙看下原因。
BTW:表是innodb的