我试图了解调用EntityManager.lock(entity,LockModeType.READ)的效果. api文档对我来说听起来很混乱.
如果我必须并发线程并且线程1调用lock(实体,LockModeType.READ),那么线程2是否仍然可以读写实体?
到目前为止我学到了什么:
JPA1中的锁定类型READ与JPA2中的OPTIMISTIC相同.如果设置了此类锁,则EntityManager会在提交事务之前检查版本属性,但不会更新它.我找到了OPTIMISTIC锁定模式的解释:Link.搜索OPTIMISTIC(READ)LockMode示例.
正如我所理解的那样,在线程1中设置读锁定对线程2 … n没有影响.所有其他线程仍然可以读写实体.但是当线程1中的事务提交而另一个线程已更新实体时,线程1中的事务将被回滚.
我理解这是对的吗?
解决方法
原文地址:https://www.jb51.cc/java/129087.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。