读书人

Hibernate3.2+JOTM2.0+Tomcat 5.5 调整

发布时间: 2012-11-05 09:35:12 作者: rapoo

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

?

读书人网 >编程

热点推荐