已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Spring+iBatis+JOTM实现JTA事务 JOTM是个开源的JTA事务管理组件,可以让程序脱离J2EE容器而获得分布式事务管理的能力。 测试过程如下: 一、环境 1、准备软件环境 spring-framework-2.5.6.SEC01-with-dependencies.zip ibatis-2.3.4 ow2-jotm-dist-2.1.4-bin.tar.gz MySQL-5.1 JDK1.5 2、创建数据库环境,注意数据库引擎为InnoDB,只有这样才能支持事务。 CREATE DATABASE IF NOT EXISTS testdb_a DEFAULT CHARACTER SET utf8; USE testdb_a; DROP TABLE IF EXISTS tab_a; CREATE TABLE tab_a ( id bigint(20) NOT NULL, name varchar(60) DEFAULT NULL, address varchar(120) DEFAULT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE DATABASE IF NOT EXISTS testdb_b DEFAULT CHARACTER SET utf8; USE testdb_b; DROP TABLE IF EXISTS tab_b; CREATE TABLE tab_b ( id bigint(20) NOT NULL, name varchar(60) DEFAULT NULL, address varchar(120) DEFAULT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 二、建立项目testJOTM 1、建立项目后,准备依赖的类库,结构如下: spring-aop.jar spring-beans.jar spring-context-support.jar spring-context.jar spring-core.jar spring-jdbc.jar spring-jms.jar spring-orm.jar spring-test.jar spring-tx.jar spring-web.jar spring-webmvc-portlet.jar spring-webmvc-struts.jar spring-webmvc.jar aspectjrt.jar aspectjweaver.jar cglib-nodep-2.1_3.jar asm-2.2.3.jar log4j-1.2.15.jar asm-commons-2.2.3.jar asm-util-2.2.3.jar aopalliance.jar mysql-connector-java-5.1.6-bin.jar ibatis ibatis-26.jar sql-map-2.dtd sql-map-config-2.dtd jotm license.txt xapool.jar jotm-core.jar jotm-standalone.jar jotm-jms.jar jotm-datasource.jar ow2-jta-1.1-spec.jar jotm-client.jar jakarta-commons commons-attributes-api.jar commons-attributes-compiler.jar commons-beanutils.jar commons-codec.jar commons-collections.jar commons-dbcp.jar commons-digester.jar commons-discovery.jar commons-fileupload.jar commons-httpclient.jar commons-io.jar commons-lang.jar commons-logging.jar commons-pool.jar commons-validator.jar junit junit-3.8.2.jar junit-4.4.jar license.txt log4j log4j-1.2.15.jar 2、根据表建立entity和SQLMappublic class TabA implements Serializable private Long id; private String name; private String address; /省略getter/setter public class TabB implements Serializable private Long id; private String name; private String address; /省略getter/setterTabA.xml insert into tab_a( id, name, address ) values ( #id#, #name#, #address# ) select LAST_INSERT_ID() update tab_a set id = #id#, name = #name#, address = #address# where id = #id# delete from tab_a where id = #value# select * from tab_a where id = #value# TabB.xml insert into tab_b( id, name, address ) values ( #id#, #name#, #address# ) select LAST_INSERT_ID() update tab_b set id = #id#, name = #name#, address = #address# where id = #id# delete from tab_b where id = #value# select * from tab_b where id = #value# /* * TabADAO * * author leizhimin 2009-6-25 12:39:19 */ public interface TabADAO /* * 保存一个TabA对象 * * param tabA TabA对象 * return 返回保存后的对象 */ TabA saveTabA(TabA tabA); /* * 更新一个TabA * * param tabA TabA对象 * return 返回更新后的对象 */ TabA updateTabA(TabA tabA); /* * 删除指定标识的一个TabA * * param id TabA标识 */ void deleteTabAById(Long id); /* * 获取指定标识的TabA * * param id TabA标识 * return 所查询到的TabA */ TabA findTabAById(Long id); /* * TabADAO * * author leizhimin 2009-6-25 12:43:55 */ public class TabADAOImpl extends SqlMapClientDaoSupport implements TabADAO /* * 保存一个TabA对象 * * param tabA TabA对象 * return 返回保存后的对象 */ public TabA saveTabA(TabA tabA) Long id = (Long) getSqlMapClientTemplate().insert(tab_a.insert, tabA); tabA.setId(id); return tabA; /* * 更新一个TabA * * param tabA TabA对象 * return 返回更新后的对象 */ public TabA updateTabA(TabA tabA) getSqlMapClientTemplate().update(tab_a.update, tabA); return tabA; /* * 删除指定标识的一个TabA * * param id TabA标识 */ public void deleteTabAById(Long id) getSqlMapClientTemplate().delete(tab_a.deleteById,id); /* * 获取指定标识的TabA * * param id TabA标识 * return 所查询到的TabA */ public TabA findTabAById(Long id) return (TabA) getSqlMapClientTemplate().queryForObject(tab_a.findById,id); B的DAO和A类似,就不写了。 /* * 测试JOTM的Service * * author leizhimin 2009-6-25 12:53:55 */ public interface StuJotmService /* * 同时保存TabA、TabB * * param a TabA对象 * param b TabB对象 */ void saveAB(TabA a, TabB b); /* * 同时更新TabA、TabB * * param a TabA对象 * param b TabB对象 */ void updateAB(TabA a, TabB b); /* * 删除指定id的TabA、TabB记录 * * param id 指定id */ void deleteABif(Long id); /* * Created by IntelliJ IDEA. * * author leizhimin 2009-6-25 12:58:48 */ /Transactional public class StuJotmServiceImpl implements StuJotmService private TabADAO tabADAO; private TabBDAO tabBDAO; /* * 同时保存TabA、TabB * * param a TabA对象 * param b TabB对象 */ / Transactional(readOnly=false) public void saveAB(TabA a, TabB b) tabADAO.saveTabA(a); tabBDAO.saveTabB(b); /* * 同时更新TabA、TabB * * param a TabA对象 * param b TabB对象 */ / Transactional(readOnly=false) public void updateAB(TabA a, TabB b) tabADAO.updateTabA(a); tabBDAO.updateTabB(b); /* * 删除指定id的TabA、TabB记录 * * param id 指定id */ / Transactional(readOnly=false) public void deleteABif(Long id) tabADAO.deleteTabAById(id); tabBDAO.deleteTabBById(id); public void setTabADAO(TabADAO tabADAO) this.tabADAO = tabADAO; public void setTabBDAO(TabBDAO tabBDAO) this.tabBDAO = tabBDAO; /* * Spring上下文工具 * * author leizhimin 2008-8-13 14:42:58 */ public class ApplicationContextUtil private static ApplicationContext applicationContext; static if (applicationContext = null) applicationContext = rebuildApplicationContext(); /* * 重新构建Spring应用上下文环境 * * return ApplicationContext */ public static ApplicationContext rebuildApplicationContext() return new ClassPathXmlApplicationContext(/ApplicationContext.xml); /* * 获取Spring应用上下文环境 * * return */ public static ApplicationContext getApplicationContext() return applicationContext; /* * 简单的上下文环境测试 */ public static void main(String args) rebuildApplicationContext(); if (applicationContext = null) System.out.println(ApplicationContext is null); else System.out.println(ApplicationContext is not null!); 三、做JTOM、Spring、iBatis、Log4j等配置 JOTM配置:perties#JNDI调用协议 tocols=jrmp #不使用CAROL JNDI封装器 carol.start.jndi=false #不启动命名服务器 carol.start.ns=false Spring配置:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广东广州市越秀区人民政府梅花村街道办事处招聘辅助人员1人参考题库含答案详解(综合卷)
- 2025广西北海市民政局及直属事业单位招聘工作人员11人参考题库(含答案详解)
- 2025广东清远市清城区源潭镇人民政府招聘后勤服务类人员3人参考题库附答案详解(培优a卷)
- 高中化学人教版 (2019)选择性必修3第五节 有机合成教学设计及反思
- 2025年娱乐产业VR技术与娱乐内容创新研究报告及未来发展趋势
- 2025广东广州市生态环境局海珠分局招聘编外人员1人(第二次)参考题库及完整答案详解一套
- 2025年青少年禁毒知识竞赛题库(含答案)
- 2025年教育科技行业在线教育平台个性化学习算法与用户体验研究报告及未来发展趋势
- 2025广东深圳市光明区人民政府办公室招聘(选聘)专干4人参考题库附答案详解(b卷)
- 2025年环保行业环保科技创新与生态文明建设研究报告及未来发展趋势
- 无人机科普大讲堂
- 医院培训课件:《临床医师的临床思维》
- 老年人能力评估量表的使用
- 2026年中国化工工程承包行业市场深度调研研究报告
- 2025年西藏自治区中考英语试题【含答案解析】
- 学术英语(南开大学)知到智慧树网课答案
- 双方解除劳动合同转为合作关系协议8篇
- 2025至2030全球与中国结冷胶行业市场规模分析及竞争策略与发展趋势分析与未来投资战略咨询研究报告
- 网络文学IP产业链全景图:2025年全产业链开发与价值实现深度报告
- 2025秋季石油工业出版社有限公司高校毕业生招聘考试参考试题及答案解析
- 组织客户篮球活动方案
评论
0/150
提交评论