【发布时间】:2015-08-05 15:42:18
【问题描述】:
在下面的代码sn-p中,整个表被锁定而不是单行:
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public void myInsertMethod(MyEntity myEntity) {
/*1 this doesn't works*/
manager.lock(myEntity,LockModeType.READ);
manager.persist(myEntity);
/* and this works but I dont know is it what i want or not...*/
manager.persist(myEntity);
manager.lock(myEntity,LockModeType.READ);
}
我认为正确的代码如下,但它不起作用
/*lock entire table for select*/
manager.lock(MyEntity.class.LockModeType.READ);
/* and after locking table persist code */
manager.persist(myEntity);
请告诉我如何才能完成这项工作,并为我推荐一篇学习此问题的好文章。
【问题讨论】:
-
为什么要锁定整个表?
-
因为在该表上运行选择查询时,在服务器上发送持久请求时未获取数据
-
您应该让您的 RDBMS 担心是否需要表或行锁。您使用的是哪个数据库?
-
我正在使用 Oracle 数据库
-
我在这张表上的select方法很重要,如果有人插入数据,select就会不同。如果发送持久请求,我会锁定哪个表...
标签: java hibernate jpa transactions locking