使用SSH框架配置多个数据源事务怎么解决?

gongyi0929 2010-03-25 05:01:28
使用SSH框架配置多个数据源,如何解决事务的问题,是需要每个sessionFactory都配备一个事务还是像我这种情况就可以了
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd">


<!-- Import Apache CXF Bean Definition -->
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />


<!-- 配置多个数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver">
</property>
<property name="url" value="jdbc:mysql://localhost:3306/doltrip">
</property>
<property name="username" value="root"></property>
<property name="password" value="lituo"></property>
<property name="maxActive" value="100"></property>
<property name="maxIdle" value="30"></property>
<property name="maxWait" value="500"></property>
<!-- 数据库的连接超时是否启动删除 -->
<property name="removeAbandoned" value="true"></property>
<!-- 数据库的删除数据库连接的超时时长 -->
<property name="removeAbandonedTimeout" value="60"></property>
<property name="logAbandoned" value="true"></property>
</bean>

<!-- 所有第三方数据的数据源 -->
<bean id="alldataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver">
</property>
<property name="url" value="jdbc:mysql://localhost:3306/alldata">
</property>
<property name="username" value="root"></property>
<property name="password" value="lituo"></property>
<property name="maxActive" value="100"></property>
<property name="maxIdle" value="30"></property>
<property name="maxWait" value="500"></property>
<!-- 数据库的连接超时是否启动删除 -->
<property name="removeAbandoned" value="true"></property>
<!-- 数据库的删除数据库连接的超时时长 -->
<property name="removeAbandonedTimeout" value="60"></property>
<property name="logAbandoned" value="true"></property>
</bean>

<!-- 配置驴妈妈的数据源 -->
<bean id="aSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver">
</property>
<property name="url" value="jdbc:mysql://localhost:3306/a">
</property>
<property name="username" value="root"></property>
<property name="password" value="lituo"></property>
<property name="maxActive" value="100"></property>
<property name="maxIdle" value="30"></property>
<property name="maxWait" value="500"></property>
<!-- 数据库的连接超时是否启动删除 -->
<property name="removeAbandoned" value="true"></property>
<!-- 数据库的删除数据库连接的超时时长 -->
<property name="removeAbandonedTimeout" value="60"></property>
<property name="logAbandoned" value="true"></property>
</bean>


<!-- 配置sessionFactory -->
<!--
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value> </property> </bean>
-->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/doltrip/model/Department.hbm.xml</value>
<value>com/doltrip/model/Employee.hbm.xml</value>
<value>com/doltrip/model/Device.hbm.xml</value>
<value>com/doltrip/model/SdCard.hbm.xml</value>
<value>com/doltrip/model/DeviceType.hbm.xml</value>
<value>com/doltrip/model/Contract.hbm.xml</value>
<value>com/doltrip/model/PhoneDetail.hbm.xml</value>
<value>com/doltrip/model/SimCard.hbm.xml</value>
<value>com/doltrip/model/Customer.hbm.xml</value>
<value>com/doltrip/model/DeviceMatain.hbm.xml</value>
<value>com/doltrip/model/Role.hbm.xml</value>
<value>com/doltrip/model/Bulletin.hbm.xml</value>
<value>com/doltrip/model/User.hbm.xml</value>
<value>com/doltrip/model/Module.hbm.xml</value>
<value>com/doltrip/model/Usersroles.hbm.xml</value>
<value>com/doltrip/model/Acl.hbm.xml</value>

<value>com/doltrip/model/DevsSims.hbm.xml</value>
<value>com/doltrip/model/DeviceOpLog.hbm.xml</value>
<value>com/doltrip/model/Positions.hbm.xml</value>

</list>
</property>
</bean>

<!-- 配置第三方软件sessionFactory -->
<bean id="alldatasessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="alldataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<!--
<property name="mappingResources">
<list>

</list>
</property> -->
</bean>

<!-- 配置驴妈妈sessionFactory -->
<bean id="asessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="aSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<!--
<property name="mappingResources">
<list>

</list>
</property> -->
</bean>

<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>

<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="create*" propagation="REQUIRED" />
<tx:method name="remove*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="*" read-only="true" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:advisor pointcut="execution(* com.doltrip.service.*.*(..))"
advice-ref="txAdvice" />
</aop:config>




希望能给解决,谢谢了
...全文
852 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
gongyi0929 2010-03-30
  • 打赏
  • 举报
回复
哦,谢谢大家了!明白了
kobe6010 2010-03-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 howardbi 的回复:]
我们现在做的项目也是配置多个数据源,数据源和缓存设置配置两个,然后事务的话,就用hibernate托管的事情,配置一个就成
[/Quote]

这位正解!!

由hibernate配置多个数据源!

spring直接声明就行了!!
三月暖阳 2010-03-26
  • 打赏
  • 举报
回复
我们现在做的项目也是配置多个数据源,数据源和缓存设置配置两个,然后事务的话,就用hibernate托管的事情,配置一个就成
licip 2010-03-26
  • 打赏
  • 举报
回复
我只知道要用JTATransactionManager来实现。不过,我具体也没试过。
gongyi0929 2010-03-26
  • 打赏
  • 举报
回复
我的帖子怎么沉了啊,就是问一下关于事务的管理问题
对这块不太熟悉,我想问下这个事务是由spring产生的事务一起管理的还是说由hibernate得事务进行管理的
每个sessionFactory都需要进行管理吗?生成不同的事务对不同的sessionFactory进行管理
xiahancslg 2010-03-26
  • 打赏
  • 举报
回复
SessionFactory只是在程序初始化的时候被初始化一次。这个单实例的SessionFactory对象被用来创建在程序中使用的Session,不应该由多个SessionFactory去管理事务把!呵呵,现在都是用公司的框架,好久没研究过Hibernate了!
gongyi0929 2010-03-25
  • 打赏
  • 举报
回复
怎么都没人帮解决的啊
matrix1984 2010-03-25
  • 打赏
  • 举报
回复
帮顶啦~~~~

81,119

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧