跨库事务处理 spring+hibernate+struts2+jta
-- Table "product" DDL
`id` int(11) NOT NULL auto_increment,
`name` varchar(50) collate utf8_unicode_ci default NULL,
`introduceId` int(11) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-- Table "introduce" DDL
`id` int(11) NOT NULL auto_increment,
`name` varchar(50) collate utf8_unicode_ci default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
<bean id="dataSource1" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://37.17k.com:3306/jtatest1?useUnicode=true&characterEncoding=utf8"/>
<property name="username" value="root"/>
<property name="password" value=""/>
<property name="maxActive" value="400"/>
<property name="maxIdle" value="30"/>
<property name="maxWait" value="30000"/>
<!--property name="validationQuery" value="select current_date()"/>
<property name="testOnBorrow" value="true"/>
<property name="testOnReturn" value="false"/>
<property name="testWhileIdle" value="true"/-->
</bean>
<bean id="dataSource2" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://35.17k.com:3306/jtatest?useUnicode=true&characterEncoding=utf8"/>
<property name="username" value="root"/>
<property name="password" value=""/>
<property name="maxActive" value="400"/>
<property name="maxIdle" value="30"/>
<property name="maxWait" value="30000"/>
<!--property name="validationQuery" value="select current_date()"/>
<property name="testOnBorrow" value="true"/>
<property name="testOnReturn" value="false"/>
<property name="testWhileIdle" value="true"/-->
</bean>
<!-- 两个sessionFactory -->
<bean id="mySessionFactory1" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource1"/>
<property name="mappingResources">
<list>
<value>/test/model/product.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
hibernate.show_sql=true
</value>
</property>
</bean>
<bean id="mySessionFactory2" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource2"/>
<property name="mappingResources">
<list>
<value>/test/model/Introduce.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
hibernate.show_sql=true
</value>
</property>
</bean>
<!-- 定义两个DAO -->
<bean id="myProductDao" class="test.dao.myProductDaoImpl">
<property name="sessionFactory" ref="mySessionFactory1"/>
</bean>
<bean id="introduceDao" class="test.dao.introduceDaoImpl">
<property name="sessionFactory" ref="mySessionFactory2"/>
</bean>
<bean id="jotm" class="org.springframework.transaction.jta.JotmFactoryBean" />
<bean id="myTxManager" class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="userTransaction" ref="jotm" />
</bean>
<bean id="myService"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager" ref="myTxManager"/>
<property name="target">
<bean class="test.service.myServiceImpl">
<property name="myProductDao" ref="myProductDao"/>
<property name="introduceDao" ref="introduceDao"/>
</bean>
</property>
<property name="transactionAttributes">
<props>
<prop key="save*">PROPAGATION_REQUIRED,-Exception</prop>
<prop key="create*">PROPAGATION_REQUIRED,-Exception</prop>
<prop key="remove*">PROPAGATION_REQUIRED,-Exception</prop>
<prop key="update*">PROPAGATION_REQUIRED,-Exception</prop>
<prop key="modify*">PROPAGATION_REQUIRED,-Exception</prop>
<prop key="delete*">PROPAGATION_REQUIRED,-Exception</prop>
<prop key="excute*">PROPAGATION_REQUIRED,-Exception</prop>
<prop key="import*">PROPAGATION_REQUIRED,-Exception</prop>
<prop key="add*">PROPAGATION_REQUIRED,-Exception</prop>
<prop key="publish*">PROPAGATION_REQUIRED,-Exception</prop>
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
public class test extends HibernateDaoSupport{
private static Log log = LogFactory.getLog(test.class);
public static void main(String args[]){
ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"});
BeanFactory factory = context;
product p=new product();
p.setIntroduceId(1);
p.setName("鸡肉");
introduce i=new introduce();
i.setName("大大牌鸡肉");
myService service=(myService)factory.getBean("myService");
service.saveSomthing(p, i);
}
}
转载于:https://blog.51cto.com/huqilong/109109
跨库事务处理 spring+hibernate+struts2+jta相关推荐
- 分享十二本经典电子书,涉及java, OO design, spring, hibernate,struts2, agile
1. thinking in java java developer常见案头书 2. effective java, 2nd Edition 会写代码和写好代码的差距,可以靠这本书缩短.包含JDK1. ...
- spring+hibernate+Struts2 整合(全注解及注意事项)
最近帮同学做毕设,一个物流管理系统,一个点餐系统,用注解开发起来还是很快的,就是刚开始搭环境费了点事,今天把物流管理系统的一部分跟环境都贴出来,有什么不足的,请大神不吝赐教. 1.结构如下 2.jar ...
- Spring+Hibernate+Struts2整合所需要的Jar包
struts2.1.6 支持jar包 xwork-2.1.2.jar struts2-core-2.1.6.jar commons-logging-1.0.4.jar freemarker-2.3.1 ...
- Spring+Hibernate+Atomikos集成构建JTA的分布式事务--解决多数据源跨库事务
一.概念 分布式事务 分布式事务是指事务的参与者.支持事务的服务器.资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上.简言之,同时操作多个数据库保持事务的统一,达到跨库事务的效果. JT ...
- SpringBoot整合atomikos实现跨库事务
背景 框架之前完成了多数据源的动态切换及事务的处理,想更近一步提供一个简单的跨库事务处理功能,经过网上的搜索调研,大致有XA事务/SEGA事务/TCC事务等方案,因为业务主要涉及政府及企业且并发量不大 ...
- struts2+spring+hibernate
---恢复内容开始--- Struts,Spring,Hibernate三大框架 1.Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建Sessio ...
- java高级框架应用开发案例教程_Java高级框架应用开发案例教程:struts2+spring+hibernate PDF...
资源名称:Java高级框架应用开发案例教程:struts2+spring+hibernate PDF 第1章 struts+spring+hibernate概述 1.1 框架概述 1.2 struts ...
- Struts2,Spring,Hibernate框架的优缺点
开源是3个框架共有的优点 Struts2框架(MVC框架)的优点如下: 1) 实现了MVC模式,层次结构清晰,使程序员只需关注业务逻辑的实现: 2) 丰富的标签库,大大提高了开发的效率: 3) S ...
- SSH之IDEA2017整合Struts2+Spring+Hibernate
摘要 IDEA无疑是Java编程的利器,在下面我们将介绍如何使用IDEA来整合SSH(Struts2 + Spring + Hibernate):介绍將分为三个部分来讲,分别是新建工程,Spring引 ...
最新文章
- 论一枚数据科学家的自我修养
- jquery-1.11.3.js与jquery-1.11.3.min.js区别
- Webpack 4 + React + Typescript 搭建启动模版
- python myqr 二维码生成
- 推荐一个十分好看的开源博客系统
- Python语言学习:复杂函数(yield/@property)使用方法、案例应用之详细攻略
- spark wordcount完整工程代码(含pom.xml)
- mvc html.display,Asp.Net MVC中的Html.DisplayFor()用于项目列表
- Javascript eval()函数 基础回顾
- Prim算法的C语言程序
- IDEA高级玩法:集成JIRA、UML类图插件、SSH、FTP、Database管理...
- pppd详解_pppd命令使用详解
- EL表达式可以使用indexof方法吗
- duplicate复制数据库(rac-单实例)
- 本地前后端联调跳过cas sso单点登录
- MQ集群(rabbitMQ)
- Memory Fusion Network for Multi-view Sequential Learning注意力融合MFN
- 变电站巡检机器人工作中有哪些常见问题?该如何解决
- (不带头结点的)单链表增删查改,逆置单链表(两种方法),求两个单链表的第一个公共结点,合并两个单链表,单循环链表中判断第一个入环点,约瑟夫环
- Apple iWork(Pages、Numbers、Keynote)11.0 发布
热门文章
- 在阿里云主机的Debian操作系统上安装Docker
- 我的Python成长之路---第三天---Python基础(9)---2016年1月16日(雾霾)
- window下用主机名登录MySQL数据库出现报错解决方案
- clearTaskOnLaunch的作用,自己总结,求关注
- 修改Linux系统默认编辑器
- 微信公众号开发之创建菜单栏代码示例(php)
- centos7.3二进制安装mariadb10.2.8
- 01.Elasticsearch安装
- asp.net后台cs 和 JavaScript 互相调用方法
- 一个肥皂泡的破灭(组图)