Spring ibatis jta多数据源配置.doc_第1页
Spring ibatis jta多数据源配置.doc_第2页
Spring ibatis jta多数据源配置.doc_第3页
Spring ibatis jta多数据源配置.doc_第4页
Spring ibatis jta多数据源配置.doc_第5页
已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论