yemeiqiang 2008-09-01 15:34
浏览 230
已采纳

怎么正确使用事务?

这个问题一直都没搞清楚

1.比方说我要执行一条sql:update A set name='abc' where id=111 这条sql要不成功要不失败,既然失败了也用不着回滚呀(数据库根本没发生变化呀?),这样也要去加个事务,why?
2.比如说一些查询语句select * from A 这样的为什么在spring里要去配个只读的事务,真是搞不清楚啊,是spring的问题,还是另有意图?

非常感谢大家能帮我解答一下!

  • 写回答

2条回答 默认 最新

  • iteye_18036 2008-09-01 18:50
    关注

    1.假如你在更新数据库的时候,在执行更新的时候还伴随着其他的数据更新,电脑突然断电,而这个时候更新数据的操作正在进行着,数据更新了一半怎么办?这个时候就要用到事务中的回滚,恢复到失败以前的状态。
    2.关于只读问题,引用《Spring in Action》里的解释,如果一个事务只对后端数据库执行读操作,数据库就可能利用事务只读特性,使用某些优化措施。通过声明一个事务为只读,你就给了后端数据库一个机会,来应用那些它认为合适的优化措施。
    因为只读的优化措施是在事务启动时由后端数据库实施的,所以,只有将那些具有可能启动新事务的传播行为的方法的事务标记成只读才有意义。另外,如果你使用了Hibernate,那么一个只读事务将使Hibernate的flush模式设置为FLUSH_NEVER,告诉Hibernate避免和数据库进行不必要的对象同步,将所有更新延迟到事务的结束。

    希望对楼主有帮助

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题
  • ¥15 企业资源规划ERP沙盘模拟