Dao类:
package com.wh;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
/**
* @Author:wh007
*
* @Date:2012-8-1
*
* @TODO:事务测试
*/
@Repository
public class TransactionDao {
private static Logger logger = LoggerFactory
.getLogger(TransactionDao.class);
@Autowired
private JdbcTemplate jdbcTemplate;
private static final String SQL_CREATE_ROLE_MODULE = "INSERT INTO ROLE_MODULE (ROLE_ID , MODULE_ID) VALUES(? , ?) ";
private static final String SQL_DELETE_ROLE_MODULE = "DELETE FROM ROLE_MODULE WHERE ID = ? ";
public boolean createRoleModule(String roleId, String moduleId) throws Exception {
try {
logger.info("start execute createRoleModule method!");
jdbcTemplate.update(SQL_CREATE_ROLE_MODULE, new Object[] { roleId,
moduleId });
return true;
} catch (Exception e) {
e.printStackTrace();
logger.info("end execute createRoleModule method wrong !");
throw e;
}
}
public boolean deleteRoleModule(String id) throws Exception {
try {
logger.info("start execute deleteRoleModule method!");
if (id != null && !id.equals("")) {
jdbcTemplate.update(SQL_DELETE_ROLE_MODULE,
new Object[] { id });
return true;
}
} catch (Exception e) {
e.printStackTrace();
logger.info("end execute deleteRoleModule method wrong !");
throw e;
}
logger.info("end execute deleteRoleModule method!");
return false;
}
}
service类:
package com.wh;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
/**
* @Author:wh007
*
* @Date:2012-8-1
*
* @TODO:
*/
@Service
public class TransactionService {
@Resource
TransactionDao dao;
public void create(String[][] array) throws Exception{
for(int i = 0 ; i < array.length ; i++){
dao.createRoleModule(array[i][0],array[i][1]);
}
}
public void delete(String[] ids) throws Exception{
for(String id : ids){
System.out.print("id : " + Integer.parseInt(id));
dao.deleteRoleModule(id);
}
}
public void doComplexThings(String id , String roleId , String moduleId) throws Exception {
// if(dao.deleteRoleModule(id)){
// dao.createRoleModule(roleId,moduleId);
// }
if(dao.createRoleModule(roleId,moduleId)){
dao.deleteRoleModule(id);
}
}
}
JUnit:
package com.wh;
import javax.annotation.Resource;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.rockstar.TransactionDao;
import com.rockstar.TransactionService;
/**
* @Author:wh007
*
* @Date:2012-8-1
*
* @TODO:
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:applicationContext.xml",
"classpath:applicationContext-service.xml",
"classpath:applicationContext-dao.xml" })
public class TestTransactionService extends AbstractJUnit4SpringContextTests {
private static Logger logger = LoggerFactory
.getLogger(TestTransactionService.class);
@Resource
private TransactionService service;
@Resource
private TransactionDao dao;
@Before
public void setUp() throws Exception {
if (service != null && dao != null) {
logger.info("init success!");
}
}
@Test
@Ignore
public void testDaoCreate() {
String[][] array = {
{"3","4"},
{"5","6"},
{"A","S"}
};
for(int i = 0 ; i < array.length ; i++){
try {
Assert.assertTrue(dao.createRoleModule(array[i][0] , array[i][1]));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
@Test
@Ignore
public void testServiceCreate() {
String[][] array = {
{"3","4"},
{"5","6"},
{"A","S"}
};
try {
service.create(array);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Test
@Ignore
public void testServiceDelete() {
String[] array = {"6",","};
try {
service.delete(array);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Test
public void testComplexThings() throws Exception{
String id = "15";
String roleId = "23";
String moduleId = "3";
service.doComplexThings(id, roleId, moduleId);
}
}
applicationContext.xml片段:
<!-- Transaction manager for a single JDBC DataSource -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 以AspectJ方式 定义 AOP -->
<aop:config proxy-target-class="true">
<aop:advisor pointcut="execution(* com.wh..*.*(..))" advice-ref="txAdvice"/>
</aop:config>
<!-- 基本事务定义,使用transactionManager作事务管理,默认get* find*方法的事务为readonly,其余方法按默认设置.
默认的设置请参考Spring文档事务一章. -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="find*" read-only="true"/>
<tx:method name="get*" read-only="true"/>
<tx:method name="query*" read-only="true"/>
<tx:method name="*" />
</tx:attributes>
</tx:advice>
分享到:
相关推荐
spring 事务处理
aop与spring事务处理
spring事务处理,整理的。希望对朋友们有帮助
主要介绍了Spring事务处理原理步骤详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
NULL 博文链接:https://yizhenn.iteye.com/blog/2293339
针对Java Spring 框架的核心技术场景案例,AOP和事务处理部分的应用案例,涉及业务层接口万次执行效率,百度网盘密码数据兼容处理和转账业务追加日志三个案例
事务的4大特性 原子性(Atomicity) 一个事务要么全部提交成功,要么全部失败回滚,不能只执行其中的一部分操作。 一致性(Consistency) 一旦事务完成(不管成功还是失败),系统必须确保涉及的数据处于一致的状态,而...
事务简介 二、程序举例环境搭建 o1. 创建数据表 ...三、使用 Spring 的事务注解管理事务 o1. 声明事务管理器 o2. 开启注解驱动 o3. 完整Spring配置文件 o4. 业务层 public 方法加入事务属性 o5. 测试
spring-tx spring-transaction spring事务管理实例
spring声明式事务处理demo。myeclipse工程
主要介绍了Spring事务处理流程和原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Spring Hibernate 事务处理 详细说明 Spring Hibernate 事务处理 详细说明
这是在java里使用到spring的配置文件里,添加事务处理过程,以至于可以回滚事务,当中使用到拦截器。
1.1 Spring事务处理时自我调用的解决方案及一些实现方式的风险 1.2 我对AOP的理解 1.3 Spring开闭原则的表现-BeanPostProcessor的扩展点-1 1.4 我对IoC/DI的理解 1.5 SpringMVC + spring3.1.1 + hibernate4.1.0 集成...
spring整合hibernate实现事务处理 1.spring整合hibernate实现事务处理-注解方式 2.spring整合hibernate实现事务处理-XML方式
自己整理的spring事务处理文档,自我感觉比较全面。呵呵。
Spring事务管理4种方式 入门级 最简单demo PlatformTransactionManager TransactionTemplate
Spring源代码解析(六):Spring声明式事务处理.doc
NULL 博文链接:https://todd-liangt.iteye.com/blog/337274