为什么网站建设需要每年续费,网站设计app,网站图片优化工具,wordpress古腾堡编辑器如何使用使用spring和hibernate可以很方便的实现一个数据源的事务管理,但是如果需要同时对多个数据源进行事务控制,并且不想使用重量级容器提供的机制的话,可以使用JOTM达到目的. JOTM的配置十分简单,spring已经内置了对JOTM的支持,一.bean idjotm classorg.spri… 使用spring和hibernate可以很方便的实现一个数据源的事务管理,但是如果需要同时对多个数据源进行事务控制,并且不想使用重量级容器提供的机制的话,可以使用JOTM达到目的. JOTM的配置十分简单,spring已经内置了对JOTM的支持,一.bean idjotm classorg.springframework.transaction.jta.JotmFactoryBean/ bean idtransactionManager classorg.springframework.transaction.jta.JtaTransactionManager property nameuserTransactionref localjotm//property /bean 首先定义如上的两个bean,利用spring对JOTM进行初始化. 二.接下来定义所需的数据源bean idinnerMysqlDataSource classorg.enhydra.jdbc.standard.StandardXADataSource destroy-methodshutdownproperty nametransactionManagerref localjotm//propertyproperty namedriverNamevalueoracle.jdbc.driver.OracleDriver/value/propertyproperty nameurlvaluejdbc:oracle:thin:192.168.1.224:1521:speed/value/property/bean bean iddataSource classorg.enhydra.jdbc.pool.StandardXAPoolDataSource destroy-methodshutdownproperty namedataSourceref localinnerMysqlDataSource//propertyproperty namemaxSizevalue5/value/propertyproperty nameminSizevalue2/value/propertyproperty nameuservaluestms/value/propertyproperty namepasswordvaluespeed/value/property/bean通过如上的两个bean定义一个数据源,所需的jar在下载的jotm的压缩包中都以自带. 三.如果还需要定义多个数据源的话,就照如上的格式定义即可. 四.定义好数据源后,我们再定义相应的sessionFactorybean idmySessionFactory classorg.springframework.orm.hibernate3.LocalSessionFactoryBean property namedataSource refdataSource/ property namemappingResources list valuecom/vtradex/edi/example/om/oracle/Example.hbm.xml/value /list /property property namehibernateProperties props prop keyhibernate.dialectorg.hibernate.dialect.Oracle9Dialect/prop /props /property property namejtaTransactionManager ref beanjotm / /property /beanmySessionFactory使用dataSource这个数据源 五.定义一个进行事务控制的代理bean idabstractTransactionProxy abstracttrue classorg.springframework.transaction.interceptor.TransactionProxyFactoryBean property nametransactionManager ref beantransactionManager/ /property property nametransactionAttributeSource bean classorg.springframework.transaction.annotation.AnnotationTransactionAttributeSource/ /property /bean 六.以上都是一些准备工作,完成后,接下来就可以对我们自己的需要进行事务控制的bean进行定义了bean idhqlExecutor1 classcom.vtradex.edi.example.util.HqlExecutor singletonfalse property namesessionFactory refmySessionFactory/ /beanbean idhqlExecutor2 classcom.vtradex.edi.example.util.HqlExecutor singletonfalse property namesessionFactory refmySessionFactory2/ /bean bean idtt parentabstractTransactionProxy property nametarget bean classcom.vtradex.edi.server.service.Tt property namehqlExec1 refhqlExecutor1/ property namehqlExec2 refhqlExecutor2/ /bean /property /beanhqlExecutor1使用mySessionFactory来对数据源进行操作而hqlExecutor2使用mySessionFactory2来对数据源进行操作 tt这个bean中使用了hqlExecutor1和hqlExecutor2来进行操作. 看一下配置实例 ?xml version1.0 encodingUTF-8?!DOCTYPE beans PUBLIC -//SPRING//DTD BEAN//EN http://www.springframework.org/dtd/spring-beans.dtdbeans bean idjotm classorg.springframework.transaction.jta.JotmFactoryBean/ bean idtransactionManager classorg.springframework.transaction.jta.JtaTransactionManager property nameuserTransactionref localjotm//property /bean bean idinnerMysqlDataSource classorg.enhydra.jdbc.standard.StandardXADataSource destroy-methodshutdownproperty nametransactionManagerref localjotm//propertyproperty namedriverNamevalueoracle.jdbc.driver.OracleDriver/value/propertyproperty nameurlvaluejdbc:oracle:thin:192.168.1.224:1521:speed/value/property/bean bean iddataSource classorg.enhydra.jdbc.pool.StandardXAPoolDataSource destroy-methodshutdownproperty namedataSourceref localinnerMysqlDataSource//propertyproperty namemaxSizevalue5/value/propertyproperty nameminSizevalue2/value/propertyproperty nameuservaluestms/value/propertyproperty namepasswordvaluespeed/value/property/bean bean idmySessionFactory classorg.springframework.orm.hibernate3.LocalSessionFactoryBean property namedataSource refdataSource/ property namemappingResources list valuecom/vtradex/edi/example/om/oracle/Example.hbm.xml/value /list /property property namehibernateProperties props prop keyhibernate.dialectorg.hibernate.dialect.Oracle9Dialect/prop /props /property property namejtaTransactionManager ref beanjotm / /property /bean bean idinnerMysqlDataSource2 classorg.enhydra.jdbc.standard.StandardXADataSource destroy-methodshutdownproperty nametransactionManagerref localjotm//propertyproperty namedriverNamevalueoracle.jdbc.driver.OracleDriver/value/propertyproperty nameurlvaluejdbc:oracle:thin:192.168.1.224:1521:speed/value/property/bean bean iddataSource2 classorg.enhydra.jdbc.pool.StandardXAPoolDataSource destroy-methodshutdownproperty namedataSourceref localinnerMysqlDataSource2//propertyproperty namemaxSizevalue5/value/propertyproperty nameminSizevalue2/value/propertyproperty nameuservalueswms/value/propertyproperty namepasswordvaluespeed/value/property/bean bean idmySessionFactory2 classorg.springframework.orm.hibernate3.LocalSessionFactoryBean property namedataSource refdataSource2/ property namemappingResources list valuecom/vtradex/edi/example/om/oracle/Message.hbm.xml/value /list /property property namehibernateProperties props prop keyhibernate.dialectorg.hibernate.dialect.Oracle9Dialect/prop /props /property property namejtaTransactionManager ref beanjotm / /property /bean bean idhqlExecutor2 classcom.vtradex.edi.example.util.HqlExecutor singletonfalse property namesessionFactory refmySessionFactory2/ /bean bean idabstractTransactionProxy abstracttrue classorg.springframework.transaction.interceptor.TransactionProxyFactoryBean property nametransactionManager ref beantransactionManager/ /property property nametransactionAttributeSource bean classorg.springframework.transaction.annotation.AnnotationTransactionAttributeSource/ /property /bean bean idtt parentabstractTransactionProxy property nametarget bean classcom.vtradex.edi.server.service.Tt /bean /property /bean/beans