2 u011469513 u011469513 于 2013.07.21 17:49 提问

Spring配置事务后不回滚,麻烦各位大侠帮小弟看看

****Spring 配置文件:****

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" destroy-method="close">
    <!-- 注册驱动配置 -->
    <property name="driverClassName">
        <value>oracle.jdbc.driver.OracleDriver</value>
    </property>
    <property name="url">
        <value>jdbc:oracle:thin:@localhost:1521:serc</value>
    </property>
    <property name="username">
        <value>serc</value>
    </property>
    <property name="password">
        <value>serc</value>
    </property>
</bean>
<!-- 事务 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
</bean>
<bean id="transactionBase" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" lazy-init="true" abstract="true">
    <!--abstract="true"时,该bean不会被实例化 lazy-init="true"的bean,IoC容器启动时不会实例化该bean,只有当容器需要用到时才实例化它。lazy-init有利于容器效率,对于不需要的bean可以先不管 -->
    <property name="transactionManager" ref="transactionManager"/>
    <property name="transactionAttributes">
        <props>
            <prop key="*">PROPAGATION_REQUIRED</prop>
        </props>
    </property>
</bean>
<bean name="/register" class="com.x1ngms.action.UserBeanAction" scope="prototype">
         <property name="userBeanBiz">
            <ref bean="userBeanBiz"/>
         </property>
</bean>
<bean name="userBeanBiz" class="com.x1ngms.biz.UserBeanBizImpl">
        <property name="userBeanDao">
            <ref bean="userBeanDao"/>
        </property>
</bean>
<bean name="userBeanDaoTarget" class="com.x1ngms.dao.UserBeanDaoImpl">
    <property name="dataSource">
        <ref bean="dataSource"/>
    </property>
</bean>
<bean id="userBeanDao" parent="transactionBase">
    <property name="target">
        <ref bean="userBeanDaoTarget"/>
    </property>
</bean>

DAO代码:
public class UserBeanDaoImpl extends JdbcDaoSupport implements UserBeanDao {

//数据源方式
public void addUserBean(UserBean userBean) {
    try {
        String sql = "insert into user_test(id,name,lo1ginName,password)values(SEQ_USER_TEST_ID.NEXTVAL,'"+userBean.getName()+"','"+userBean.getLoginName()+"','"+userBean.getPassword()+"')";
        this.getJdbcTemplate().execute(sql);
    } catch (Exception e) {
        throw new RuntimeException(e.getMessage());
    }
}
public List<UserBean> getList() {
    try {
        String sql = "select id,name,loginName,password from user_test order by id ";
        return (List<UserBean>)this.getJdbcTemplate().queryForList(sql);
    } catch (Exception e) {
        throw new RuntimeException(e.getMessage());
    }
    //return null;
}
public void deleteUser(String id){
    try {
        String sql = "delete from user_test where id ="+id;
        this.getJdbcTemplate().execute(sql);
    } catch (Exception e) {
        throw new RuntimeException(e.getMessage());
    }

}
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
关于spring中事务不回滚的解决方式
关于spring中事务不回滚的问题,网上查了很多资料,基本有如下可能性: 假如我们把事务加到Service层: 1.Service层的方法我们try...catch了,导致AOP捕获不到异常. 所以事务控制失败.  解决方式: 不要在Service层try...catch即可.    或在catch块最后加上"throw new RuntimeException()".这样
sql异常,Spring Aop事务不回滚解决方案
在做Spring声明式事务的时候,数据库连接池是HikariCP, 如果sql报错,比如某一个字段can’t be null, 这种sql exception就无法回滚,但是如果是1/0报错,事务就可以回滚,在网上查了很多资料,试了下面几个方法: 1. 检查mysql是否是innodb? 2. 自定义异常; 3. throw new RuntimeException(); 4. 在try ...
Spring事务异常不回滚
使用spring难免要用到spring的事务管理,要用事务管理又会很自然的选择声明式的事务管理,在spring的文档中说道,spring声明式事务管理默认对非检查型异常和运行时异常进行事务回滚,而对检查型异常则不进行回滚操作。 那么什么是检查型异常什么又是非检查型异常呢? 最简单的判断点有两个: 1.继承自runtimeexception或error的是非检查型异常,而继承自exceptio
关于Spring事务管理无法回滚的问题
这几天在学习spring事务管理,遇到了一个问题,什么配置都做了,什么方法都试了,但是在事务中抛出异常后,就是无法回滚,也就是事务管理没有生效。真的找不到问题! 最后发现了是因为我对数据库的操作是直接获取了数据源的连接,这些操作在spring容器之外,不受spring容器管理,所以spring事务无法管理,只要用在spring容器中配置的jdbcTemplate来执行数据库操作,或者使用一些和s
spring springmvc mybatics 中配置事务不回滚问题。。。
身边一些小伙伴们搭的 spring +springmvc+mybatics 项目,结果一运行发现 配置的事务怎么都无法生效!!!! 哦研究了几天终于有了一定成果。 情况1  在service  层加@Trasactional注解 ,service层整个方法代码做了try catch 处理。然后在程序中手动抛出异常  结果惊奇地发现事务还是提交了。。。 解决办法: service 层加上@
spring注解事物,不生效,不回滚,正确配置
spring开发中如果需要加入注解事务,可以进行如下配置。 在spring的配置文件中加入: class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  proxy-target-class="false"/> 在service层方法上加上@Transactional注
spring管理事务异常时事务未回滚问题笔记
本片博客旨在记录项目开发过程中遇到的一些问题,提高日后在解决问题上的能力 问题情形:在维护一个2012年的老项目时候出现了一个事务不一致的问题,如果不是仔细点,还真不能发现这个问题,代码如下: public boolean checkTaskIsPass(Integer pId,Integer type) { try{ this.taskAdminDAO.checkTaskI
Spring事务不回滚,捕获异常后不抛出不回滚
项目中一个对外提供的接口用try catch捕获异常后不会滚类似这样的方法不会回滚 (一个方法出错,另一个方法不会回滚) : if(userSave){ try { userDao.save(user); userCapabilityQuotaDao.save(capabilityQuota);
实训题目+蓝牙
蓝牙的组件有那些啊?各位大侠一定要帮一帮小弟啊.
Spring事务管理,"'程序报错'但'事务不回滚'?"问题分析(SSM实例)
Spring事务管理,是经常能应用到的一个功能,但是有时候会有'事务不回滚'的情况发生,那么我们来看看,什么情况下,事务真的不会回滚呢? 本文后段还有SSM的事务管理配置实例,供大家学习参考 就我现在遇见的坑来说,’报错不回滚’有两个原因: 1.不清楚什么样的报错才会回滚(理解错误). 2.配置文件错误或者不完整(配置错误).