weixin_42299907 2009-02-05 16:47
浏览 283
已采纳

spring service的事务配置问题

[color=blue]问题描述:
一个简单的功能(类似用户登录),我在service层写一个方法isXXExist(final XX xx),要求用户填写的信息不能和数据库中的已有信息重复(类似用户的ID)。可是在用户写了新的数据并提交后(注:一个已存在的数据),提示数据重复,返回到原来界面,但是数据被更新,出现了重复数据。
问题的解决:
打开log4j的数据项,查看tomocat的报错信息。页面返回前,系统自动做了一次update操作,将脏数据保存进数据库。
在applicationContext-service.xml文件中原配置如下:

<tx:advice id="txAdvice">
    <tx:attributes>
        <tx:method name="get*" read-only="true"/>
        <tx:method name="*"/>
    </tx:attributes>
</tx:advice>

加入<tx:method name="is*" read-only="true"/> 后,程序正常

请问:虽然我找到了原因,但是还是不太理解,请指点下,给我讲下详细的原因。
[/color]

  • 写回答

1条回答 默认 最新

  • mackhong 2009-02-06 09:39
    关注

    applicationContext-service.xml里面配置的是spring2.0以上版本的声明事务管理。
    你的程序应该是调用声明式事务。

    就是将事务处理的级别设置为只读,也就是说仅能从读取,不能进行写的操作。

    所以你的数据被提交之后,已经不会写入了 :D

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型