java-ssh中事务没有被管理上,总是自动提交

问题描述

ssh中事务没有被管理上,总是自动提交

application.xml

<!-- hibernate配置文件 -->

<!--方言-->
${dialect}
<!--显示sql-->
${show_sql}
<!--格式化sql-->
${format_sql}

            <prop key="hibernate.current_session_context_class">${thread}</prop>

            <prop key="hibernate.transaction.factory_class">${transaction}</prop>
        </props>
    </property>
    <property name="mappingResources">
        <list>
            <value>module/test/entity/Test.hbm.xml</value>
            <value>module/tree/entity/SsfFaLocation.hbm.xml</value>
            <value>module/base/user/entity/BaseUser.hbm.xml</value>
        </list>
    </property>
</bean>

<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory"/>
</bean>

<tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
        <tx:method name="save*" propagation="REQUIRED" rollback-for="java.lang.Throwable,java.lang.Exception" />
        <tx:method name="delete*" propagation="REQUIRED" rollback-for="java.lang.Throwable,java.lang.Exception"/>
        <tx:method name="update*" propagation="REQUIRED"  rollback-for="java.lang.Throwable,java.lang.Exception"/>
        <tx:method name="get*" read-only="true" propagation="NOT_SUPPORTED" />
        <tx:method name="doGet*" propagation="REQUIRED" rollback-for="java.lang.Throwable,java.lang.Exception"/>
        <!--test-->
        <tx:method name="test" propagation="REQUIRED" rollback-for="java.lang.Throwable,java.lang.Exception" />
        <tx:method name="upload*" propagation="REQUIRED" rollback-for="java.lang.Throwable,java.lang.Exception"/>
    </tx:attributes>
</tx:advice>
<!-- 那些类的哪些方法参与事务 -->
<aop:config>
    <!--没切上 只切的到了一个类  execution(* util..*.*(..))
        第二个测试daoImpl   execution(* module.test.dao.DemoDaoImpl.test(..)) or
        -->
    <aop:pointcut id="allServiceMethod" expression="(execution(* module.*.service..*.*(..)) or
                                                     execution(* module.base.*.service.*.*(..))
                                                     )"/>
    <aop:advisor pointcut-ref="allServiceMethod" advice-ref="txAdvice"/>
</aop:config>

Test1 t = new Test1();
        t.setTid("656");
        t.setTname("玉兔");
        saveEntity(t);

        Test1 t1 = new Test1();
        t1.setTid("799");
        t1.setTname("bbf");
        saveEntity(t1);
        throw new RuntimeException("报错吧");

public void saveEntity(T o) {
    Assert.notNull(o);
    getHibernateTemplate().saveOrUpdate(o);
    log.info("save entity:"+o);
}

    保存第一条就提交到数据库了 这是怎么回事啊

解决方案

是你理解的有问题。它的事务管理是说它的事务在Dao层执行,离开Dao层就没有了;

解决方案二:

这个才是事物的切面,只有这这个配置的包下的类或类里面的方法才有事物,离开了就没有事物。其中*表示的是通配符

解决方案三:

这个才是事物的切面,只有这这个配置的包下的类或类里面的方法才有事物,离开了就没有事物。其中*表示的是通配符

解决方案四:

保存第一条本来就提交到数据库了,,

时间: 2024-09-14 08:47:33

java-ssh中事务没有被管理上,总是自动提交的相关文章

Java开发平台中的生命周期管理

对象的生命周期没有大家想的那么复杂.其实其就是回答了两个简单的问题.什么时候需要创建对象? 什么时候把对象消亡?这两个问题解决了,那么对象的生命周期问题也就解决了. 一.传统的对象生命周期管理方法. 为了对Java开发平台中的生命周期管理方法有一个更加深刻的理解,笔者认为大家需要对传统的生命 周期管理方法先有一个了解.因为这有助于大家有一个相互的对比,从而会对Java语言中的生命周期管理 方法会有一个比较直观的印象. 在传统的编程语言中,如C语言,其考虑对象的生命周期,主要是从对象与应用程序的执

javaweb-java代码中没法执行首页、上一页、下一页操作

问题描述 java代码中没法执行首页.上一页.下一页操作 emp_list.jsp调用split_page_plugin.jsp实现对数据库表的分页查询和模糊查询操作,但是最后出来的效果无法实现分页查询中的首页.上一页.下一页操作操作,相应按钮也不亮,如图,我用的是mysql数据库,请高手帮我调试一下,非常感谢,相应代码如下: emp_list.jsp <%@ page contentType="text/html" pageEncoding="GBK"%&g

详解Java的JDBC API中事务的提交和回滚_java

如果JDBC连接是在自动提交模式下,它在默认情况下,那么每个SQL语句都是在其完成时提交到数据库. 这可能是对简单的应用程序,但有三个原因,你可能想关闭自动提交和管理自己的事务: 为了提高性能 为了保持业务流程的完整性 使用分布式事务 若要控制事务,以及何时更改应用到数据库.它把单个SQL语句或一组SQL语句作为一个逻辑单元,而且如果任何语句失败,整个事务失败. 若要启用,而不是JDBC驱动程序默认使用auto-commit模式手动事务支持,使用Connection对象的的setAutoComm

事务策略: 了解事务陷阱-在Java平台中实现事务时要注意的常见错误

简介:事务处理的目标应该是实现数据的高度完整性和一致性.本文是为 Java 平台开发有效事务策 略 系列文章 的第一篇,介绍了一些妨碍您实现此目标的常见事务陷阱.本系列作者 Mark Richards 通 过使用 Spring Framework 和企业 JavaBeans(Enterprise JavaBeans,EJB)3.0 规范中的代码示例解 释了这些极其常见的错误. 在应用程序中使用事务常常是为了维护高度的数据完整性和一致性.如果不关心数据的质量,就不必 使用事务.毕竟,Java 平台

在Java程序中实现FTP的上传下载

FtpList部分是用来显示FTP服务器上的文件:GetButton部分为从FTP服务器下传一个文件:PutButton部分为向FTP服务器上传一个文件. 别忘了在程序中还要引入两个库文件(importsun.net.*,import sun.net.ftp.*). 以下是这三部分的JAVA源程序: (1)显示FTP服务器上的文件 void ftpList_actionPerformed(ActionEvent e) { String server=serverEdit.getText(); /

SQL Server 中的事务(含义,属性,管理)

含义: 事务要有非常明确的开始和结束点,SQL Server 中的每一条数据操作语句,例如SELECT.INSERT.UPDATE和DELETE都是隐式事务的一部分.即使只有一条语句,系统也会把这条语句当做一个事务,要么执行所有的语句,要么什么都不执行. 事务开始之后,事务所有的操作都会写到事务日志中,写到日志中的事务,一般有两种:一是针对数据的操作,例如插入.修改和删除,这些操作的对象是大量的数据;另一种是针对任务的操作,例如创建索引.当取消这些事务操作时,系统自动执行这些操作的反操作,保证系

JAVA两个部署在不同服务器上的程序访问同一个表,如何避免同时向这个表中插入数据 ?

问题描述 JAVA两个部署在不同服务器上的程序访问同一个表,如何避免同时向这个表中插入数据 ? JAVA两个部署在不同服务器上的程序访问同一个表,如何避免同时向这个表中插入数据 ?刚写了个程序发现存在这个问题,原以为这种概率不会太高,但还是存在,怎么解决?谢谢 解决方案 其实和进程互斥的原理应该是一样的吧,在某一服务器访问该公共表的时候加锁,并同步更新数据至所有可达服务器,这样别的服务器也有访问请求时,就会等锁解开再进行.加锁的服务器程序应负责在释放资源后解锁. 解决方案二: 情况是这样的,现在

关于java问题-java ssh框架中的问题

问题描述 java ssh框架中的问题 For这点过不去,all有值 解决方案 还是ssh框架下的问题呢!关于ssh框架乱码问题SSH框架常见问题 解决方案二: For里面的哪一行过不去? 解决方案三: 前面print(all)改为打印其长度size,看看all这个列表长度是否非零呢? 解决方案四: 直接try,,catch捕获,,看报的什么异常

java中如何进行权限管理,不同用户在界面显示的功能也不同。

问题描述 java中如何进行权限管理,不同用户在界面显示的功能也不同. 每个用户的权限不同,超级管理员可以将权限赋予给用户,用户不能操作不具有权限的功能,求大神帮忙 解决方案 一般都会使用一些权限模型的,比如RBAC模型,对于数据库可以设计5张表,分别是用户表,角色表,许可表,用户角色关系表,角色许可关系表 解决方案二: 始终离不开,权限.角色.资源 解决方案三: rbac可以解决你的需求