spring声明式事务不起作用
代码如下:
User类:
public class User {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
manager层
public interface UserMgr {
public void saveUser(User user);
}
public class UserMgrImpl implements UserMgr {
private UserDao userDao;
public void saveUser(User user) {
userDao.saveUser(user);
throw new RuntimeException();
}
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
}
dao层:
public interface UserDao {
public void saveUser(User user);
}
public class UserDaoImpl implements UserDao {
private SessionFactory sessionFactory;
public void saveUser(User user) {
Session session = sessionFactory.openSession();
session.save(user);
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
}
测试类:
public class UserTest extends TestCase {
public void test1(){
ApplicationContext ctx = (ApplicationContext)new FileSystemXmlApplicationContext("applicationContext-*.xml");
UserMgr mgr = (UserMgr)ctx.getBean("manager");
User user = new User();
user.setUsername("AAA");
user.setPassword("123");
mgr.saveUser(user);
}
}
spring配置文件
<?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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
<bean id="userDao" class="dao.UserDaoImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="manager" class="manager.UserMgrImpl">
<property name="userDao" ref="userDao"></property>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</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="save*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="allManagerMethod" expression="execution(* manager.*.*(..))"/>
<aop:advisor pointcut-ref="allManagerMethod" advice-ref="txAdvice"/>
</aop:config>
</beans>
为什么spring事务不起作用,记录还会存到数据库。但是,如果UserDaoImpl继承HibernateDaoSupport,采用this.getHibernateTemplate().save(user),spring事务就起作用。小弟是个菜鸟,刚学spring,哪位高手可以解释一下。
分享到:
相关推荐
spring声明式事务实例 可复制修改使用。。。。。。。。。。
Spring声明式事务配置管理方法
Spring源代码解析(六):Spring声明式事务处理.doc
spring声明式事务处理demo。myeclipse工程
1. 基于Aspectj实现动态数据源...6. 实现事务内切换数据源(支持原生Spring声明式事务哟,仅此一家),并支持多数据源事务回滚(有了它除了跨服务的事务你需要考虑分布式事务,其他都不需要,极大的减少了系统的复杂程度)
Spring 声明式事务和Spring 编程式事务
Spring框架的声明式事务管理是Java开发中的核心特性,它为高效且可靠的数据操作提供了强大支持。...深入理解Spring声明式事务的工作原理,不仅能帮助开发者更高效地使用Spring框架,也是提升Java企业级开发能力的关键。
NULL 博文链接:https://babalaaaa.iteye.com/blog/538687
spring声明式事务.zip
spring声明式事务管理异常处理的测试
1.本例子的使用了 ssh 框架 2.本例子DAO层 使用了 getHibernateTemplate 来实现数据的新增修改和删除 3.本例子使用了声明式...4.本例子提供了详细的使用方法,可以根据 readme.txt 来逐步的验证声明式事务是否起作用
示例代码 博文链接:https://awaken2012.iteye.com/blog/1728283
06丨20%的业务代码的Spring声明式事务,可能都没处理正确 Spring 针对 Java Transaction API (JTA)、JDBC、Hibernate 和 Java Persistence API (JPA) 等事务 API,实现了一致的编程模型,而 Spring 的声明式事务功能...
Java高级编程 实验报告 spring 声明事务 实验目的 掌握spring 声明式事务管理配置 实验环境 本实验采用本实验采用的eclipse或者 Myeclpse开发工具。Spring 4.0以上 Jdk1.7以上、oracle/mysql。
spring声明式事务配置方法.docx
spring声明式事务管理+jdbc+连接池 包内为代码,下载可直接执行。 一直用s2sh,感觉hibernate不好用,所以写了一个spring声明式事务管理+jdbc+连接池。
spring声明式事务管理+jdbc+连接池.zip
spring声明式事务管理_入门
Spring声明式事务及BaseDao完整版
struts2+spring+hibernate ssh 整合+spring声明式事务管理