Hibernate3.2+JOTM2.0+Tomcat 5.5 整合
最近单位有一个网站的数据库负载过重,考虑进行数据库拆分,问题就来了,拆分以后数据库的事务处理咋办?因为以前写的java程序没有考虑到分布式事务。正好前两天接触了JOTM,这是个好东西。废话少说,马上开工。
网上查了好多关于3者的整合,但大都是Spring+Hibernate+JTOM的,很少有直接Hibernate+JOTM的(有,但很少),还是自己动手吧。
?
网上的事务部分一般采用<Transaction>…..</Transaction>配置,但是我测了一下,就是不成,也不知是哪里出了问题,所以改用数据源的形式,效果一样.
?五.数据源配好了,下面改Hibernate了
因为是多数据库操作,需要建立两个HibernateSessionFactory和两个Hibernate配置文件。工厂部分代码直接拷贝一份,修改一下其中的CONFIG_FILE_LOCATION就可以了
?
hibernate.cfg.xml
package com.zhang.test; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.transaction.SystemException; import javax.transaction.UserTransaction; import org.hibernate.Session; import com.zhang.factory.HibernateSessionFactory; import com.zhang.factory.HibernateSessionFactory2; import com.zhang.pojos.Address; import com.zhang.pojos.Users; public class Test { public void insertinto() { UserTransaction tx = null; try { tx = (UserTransaction) new InitialContext().lookup("java:comp/env/UserTransaction"); } catch (NamingException e1) { e1.printStackTrace(); } try { tx.begin(); Session session = HibernateSessionFactory.getSession(); // Users user = new Users(); user.setUsername("SSSSS"); user.setPassword("123"); session.save(user); Session session2 = HibernateSessionFactory2.getSession(); Address address = new Address(); address.setUsersId(1); address.setAddress("XXXXXXX"); session2.save(address); tx.commit(); } catch (Exception e) { e.printStackTrace(); try { tx.rollback(); } catch (IllegalStateException e1) { e1.printStackTrace(); } catch (SecurityException e1) { e1.printStackTrace(); } catch (SystemException e1) { e1.printStackTrace(); } } } }
以上配置本家调试通过,如果有什么问题希望大家留言~共同进步~~
?
CSDN本人原创.今搬家至ITEYE.版权所有@Robot_G
?