我用的S2SH,如何在不抛出异常的情况下会滚数据?

问题描述

HIBERNATE的事务是用SPRING管理,一般是根据异常来回滚数据。我遇到一个怪问题,我取出一条记录,设置一个属性,没有做保存操作,数据就存进去了。比如在一个struts2 action 里面 public String execute(){ User user=userDao.get(id); user.setName("test");//userDao.save(user);//为何没有这句代码,也能保存数据? return SUCCESS;}public String execute(){ User user=userDao.get(id); user.setName("test"); throw new RuntimeException("test");//这样可以回滚。有没有什么办法可以手动回滚数据?而不是一定要抛出异常才能回滚 return SUCCESS;}注意:HIBERNATE的事务是用SPRING管理。 问题补充:mikehuhu 写道

解决方案

User user=userDao.get(id); 后user是持久态的,session定时flush后,对user的更新会被更新到数据库中;可以通过Session.evict(user)将user从session缓存中移除,此后对user的修改将不会同步到数据库中。
解决方案二:
用sessionTransaction tx = session.beginTransaction();...貌似需要close session。

时间: 2024-12-25 10:37:32

我用的S2SH,如何在不抛出异常的情况下会滚数据?的相关文章

Java事物回滚失效,在抛出异常的情况下仍然提交了SQL

问题描述 Java事物回滚失效,在抛出异常的情况下仍然提交了SQL private Connection connection; private Statement pre; public String set(String goal,String marriage){ return "update info set goal='"+goal+"'where marriage='"+marriage+"'"; } public void star

C# 写的Winform页面下载程序 在没有抛出异常的情况下退出程序

问题描述 C#写的Winform页面下载程序在没有抛出异常的情况下退出程序但是线程依然存在请问一下当正常与不正常的情况下,程序是不是都会通过CLoseing的事件退出程序呢谢谢~~!!在线等 解决方案 解决方案二:不一定,有些异常直接就强制退出程序,并没有执行Closing事件你trycatch一下吧解决方案三:有时是直接退出进程了解决方案四:关于正常退出程序,线程还没有退出的问题,你可以定义一个全局变量如boolm_bExited=false;在窗体Closed事件里把m_bExited=tr

请教 s2sh下 批量提交数据的话action和service该怎么写

问题描述 今天的面试被问道 当前台页面需要批量提交数据的话 action里面应该怎么写 service层该做什么工作来处理批量数据....小弟求指教 问题补充:hu437 写道 解决方案 恩 知道了就好解决方案二:要看你想批量数据得类型跟表里面的关系了关系都是独立的话 不好办 如果不是独立的 就搞个数组把这些数据全部存在数组当中然后他说在service层处理的话 看怎么处理了反正第一步就先遍历出来然后在调用DAO里面写好的处理方法就OK了可是做了项目要看情况希望能够帮助你解决方案三:这个批量是个

【原创】具有path autovivification和conversion功能的JSON库

      研究该 JSON 库的由头是因为目前开发 modb 需要支持 json 解析功能.而发现这个有意思的 项目 的地方正是在开源中国.OSChina 对该库的描述如下:  json.c 是一个小型的 C 语言的 JSON 解析库,支持路径表达式.autovivification, 和 restartable I/O. 而库的作者做了更为丰富的表述(中英对照翻译如下):  ===== json.c is a JSON C library that supports path autoviv

asp.net编程程序优化要注意的问题

一.SqlDataRead和Dataset的选择 Sqldataread优点:读取数据非常快.如果对返回的数据不需做大量处理的情况下,建议使用SqlDataReader,其性能要比datset好很多.缺点:直到数据读完才可close掉于数据库的连接 (SqlDataReader 读数据是快速向前的.SqlDataReader 类提供了一种读取从 SQL Server 数据库检索的只进数据流的方法.它使用 SQL Server 的本机网络数据传输格式从数据库连接直接读取数据.DataReader需

[WCF权限控制]模拟(Impersonation)与委托(Delegation)[上篇]

由于服务操作是在寄宿进程中执行,在默认的情况下,服务操作是否具有足够的权限访问某个资源(比如文件)决定于执行寄宿进程Windows帐号的权限设置,而与作为客户端的Windows帐号无关.在有多情况下,我们希望服务操作执行在基于客户端的安全上下文中执行,以解决执行服务进行的帐号权限不足的问题.这就涉及到一个重要的话题--模拟(Impersonation)与委托(Delegation)[实例程序源代码从这里下载] 目录: 一.从访问令牌(Access Token)说起 二.再谈WindowsIden

Java上的try catch并不影响性能(转)

转自:http://blog.csdn.net/tao_zi7890/article/details/17584813 最近因为担心自己开发的库不稳定,会影响到接入产品的正常运行,在代码的不少地方都加了一层try catch,主要是为了避免自己的一些异常抛出导致,应用crash,捕获的异常也并没有做什么特别的处理,只是在log中输出该异常的信息.try catch多了后,就开始担心会不会影响性能,以前学C或C++的时候好像曾经被警告过要尽量少使用try catch,好像是在压栈的时候会更消耗神马

java面试知识(来自牛客网)

接口和抽象类的区别是什么? v接口和抽象类的区别是什么?   Java提供和支持创建抽象类和接口.它们的实现有共同点,不同点在于:接口中所有的方法隐含的都是抽象的.而抽象类则可以同时包含抽象和非抽象的方法.类可以实现很多个接口,但是只能继承一个抽象类类如果要实现一个接口,它必须要实现接口声明的所有方法.但是,类可以不实现抽象类声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的.抽象类可以在不提供接口方法实现的情况下实现接口.Java接口中声明的变量默认都是final的.抽象类可以包含非

【原创】各种 JSON 解析库的功能简介

这里增加一项无聊的对比图,看客自斟. =================================== [rui_maciel/mjson]Last Update:2013-05-15(最新版本为 mjson-1.5 发布日期为 2012-08-22)description M's JSON parser is a small JSON parser written in ISO C which enables the user to handle information describe