hibernate3.5 jta事务问题
第一次使用jta事务,使用的服务器为jboss5。代码如下 :
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>
<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=小明