【发布时间】:2013-11-29 19:33:57
【问题描述】:
使用拦截器来管理事务是一种好习惯吗? 我有一个强项,尽管它等同于在动作本身中开始和提交。 为什么我应该使用拦截器管理的事务?
【问题讨论】:
-
你在哪里看到这样的拦截器?
-
嗨 Roman,我的一个朋友建议他以同样的方式使用它,但我发现它没有任何意义,因为这会锁定数据库单元格,直到从操作返回结果。
-
你有例子吗?你能说明它是如何锁定数据库的吗?
-
看到transaction begin和commit出现在interceptor中,所以操作过程中读取的值在整个处理完成之前不会被修改。实际上修改必须等待其他操作完成才能真正生效反映到 db。现在想想逻辑工作单元(事务)需要更长的时间才能完成。在此期间,如果其他一些事务已读取相同的数据并尝试在前一个事务之前修改它,那么前一个事务将被回滚.在并发执行环境中,这可能导致多个事务回滚。
-
发出了什么错误或者你怎么知道事务被回滚了?
标签: java hibernate struts2 transactions interceptor