Spring Web Flow 2 中流管理的持久化
2010-05-18 00:00:00 来源:WEB开发网流管理持久化中的 OptimisticLockingFailureException
乐观锁 是一个极其有效的并发性控制方法,它可以确保数据完整性而又无需在数据库中放置任何物理锁。尽管不是强制实施的,但是强烈建议在流管理的持久化中使用乐观锁。
持久化上下文在刷新时检查实体版本,如果检查出并发的修改,它就抛出 OptimisticLockingFailureException 异常(在 Hibernate 中是 StaleObjectException 异常)。实体在内存中存在的时间越长,其对应的数据库值被其他进程修改的可能性越大。
如上所述,在 Open Session in View 模式中,实体的持久状态受制于用户请求。一旦实体分离,通常需要在后续用户请求中进行合并/重新连接/重新加载操作来还原实体的持久状态,从而使实体与其对应的数据库值保持同步。
在流管理的持久化中,实体在多个用户请求之间保存其持久状态。在各用户请求之间没有强制执行数据库同步,因此很有可能出现 OptimisticLockingFailureException 异常。重要的是要优雅地处理 OptimisticLockingFailureException 异常,就像处理任何检查型业务异常一样。(即使 OptimisticLockingFailureException 是一个回滚到数据库事务的运行时异常,也应如此)。常用的策略是让用户有机会合并其变更或用未过期数据重启流。
流作用域的持久化上下文
Web 流被声明为 XML 格式的流定义文件。带有 <persistence-context/> 标签的 Web 流启动时,会创建一个新的持久化上下文对象并将其绑定到流作用域。在等待用户请求时,该对象会断开与底层 JDBC 连接的连接并在服务于用户请求时重新连接。在整个流过程中都重用同一个持久化-上下文对象,这避免了分离实体状态的问题和相应的 LazyInitializationException 异常。
- ››web安全之信息刺探防范1
- ››webqq 最新加密算法
- ››webdriver 数据库验证方法
- ››Spring源码学习-含有通配符路径解析(上)
- ››WebSphere Application Server 7.0 XML Feature P...
- ››Web2.0网络时代基于社会影响力的声望值
- ››Web服务器搭建:配置Linux+Apache+Mysql+PHP(或Pe...
- ››WebLogic调整Java虚拟机性能优化参数
- ››webqq2.0协议研究(3)-ClientId生成
- ››Web.config配置文件
- ››WebBrowser组件的execWB方法——Delphi控制浏览器...
- ››Web前端设计模式--制作漂亮的弹出层
更多精彩
赞助商链接