操作的乐观锁定
Optimistic locking for operations
我在文档中看到了乐观锁的例子,它是有效的:
// Properly configure the DSLContext
DSLContext optimistic = DSL.using(connection, SQLDialect.ORACLE,
new Settings().withExecuteWithOptimisticLocking(true));
// Fetch a book two times
BookRecord book1 = optimistic.fetchOne(BOOK, BOOK.ID.eq(5));
BookRecord book2 = optimistic.fetchOne(BOOK, BOOK.ID.eq(5));
// Change the title and store this book. The MODIFIED value has not been changed since the book was fetched.
// It can be safely updated
book1.setTitle("Animal Farm");
book1.store();
但我对操作的乐观锁定有疑问。如我所见,乐观锁定仅适用于 store() 方法。
我有机会以这种方式进行乐观锁定吗:
dslContext.update(getIdField().getTable())
.set(getEntityField(), dto)
.where(getIdField().eq(dto.getId()))
dslContext.batch(updateOperations).execute();
从 jOOQ 3.16 开始,jOOQ 的乐观锁定是 UpdatableRecord
唯一的功能,这意味着它适用于 jOOQ-generated SQL 来自您的 insert()
、update()
、store()
、merge()
、delete()
次调用记录在案。它不适用于任何其他查询。
在 jOOQ 的未来版本中,可能会有此功能的 re-design 以使用名为 "client side computed columns" (#9879). The re-design is tracked as #13339 的新 jOOQ 3.17 功能。它可能会或可能不会随 jOOQ 3.17 一起提供。一旦实现,您的任意 DML 语句将被转换以实现乐观锁定语义。
我在文档中看到了乐观锁的例子,它是有效的:
// Properly configure the DSLContext
DSLContext optimistic = DSL.using(connection, SQLDialect.ORACLE,
new Settings().withExecuteWithOptimisticLocking(true));
// Fetch a book two times
BookRecord book1 = optimistic.fetchOne(BOOK, BOOK.ID.eq(5));
BookRecord book2 = optimistic.fetchOne(BOOK, BOOK.ID.eq(5));
// Change the title and store this book. The MODIFIED value has not been changed since the book was fetched.
// It can be safely updated
book1.setTitle("Animal Farm");
book1.store();
但我对操作的乐观锁定有疑问。如我所见,乐观锁定仅适用于 store() 方法。 我有机会以这种方式进行乐观锁定吗:
dslContext.update(getIdField().getTable())
.set(getEntityField(), dto)
.where(getIdField().eq(dto.getId()))
dslContext.batch(updateOperations).execute();
从 jOOQ 3.16 开始,jOOQ 的乐观锁定是 UpdatableRecord
唯一的功能,这意味着它适用于 jOOQ-generated SQL 来自您的 insert()
、update()
、store()
、merge()
、delete()
次调用记录在案。它不适用于任何其他查询。
在 jOOQ 的未来版本中,可能会有此功能的 re-design 以使用名为 "client side computed columns" (#9879). The re-design is tracked as #13339 的新 jOOQ 3.17 功能。它可能会或可能不会随 jOOQ 3.17 一起提供。一旦实现,您的任意 DML 语句将被转换以实现乐观锁定语义。