原标题:Spring认证|Spring Data JDBC参考文档三 (内容来源:Spring中国教育管理中心)#Spring##java##程序员#
9.6.9. 身份证生成
Spring Data JDBC 使用 ID 来标识实体。实体的 ID 必须使用 Spring Data 的@Id注解进行注解。
当您的数据库具有用于 ID 列的自动增量列时,生成的值在将其插入数据库后在实体中设置。
一个重要的约束是,在保存实体后,该实体不能再是新的。请注意,实体是否是新实体是实体状态的一部分。对于自动增量列,这会自动发生,因为 ID 由 Spring Data 使用 ID 列中的值设置。如果您不使用自增列,您可以使用一个BeforeSave监听器,它设置实体的 ID(在本文档后面介绍)。
9.6.10. 乐观锁定
Spring Data JDBC 通过@Version在聚合根上注释的数字属性来支持乐观锁定 。每当 Spring Data JDBC 使用这样的版本属性保存聚合时,会发生两件事:聚合根的更新语句将包含一个 where 子句,检查存储在数据库中的版本实际上未更改。如果不是这种情况,
OptimisticLockingFailureException将会抛出一个will。此外,实体和数据库中的 version 属性都会增加,因此并发操作将注意到更改并抛出一个(OptimisticLockingFailureException如果适用),如上所述。
这个过程也适用于插入新的聚合,其中 anull或0version 表示一个新实例,然后增加的实例将实例标记为不再是新的,这使得在对象构造期间生成 id 的情况下,例如当 UUID 是用过的。
在删除过程中,版本检查也适用,但不会增加版本。
9.7. 查询方法
本节提供有关 Spring Data JDBC 的实现和使用的一些特定信息。
您通常在存储库上触发的大多数数据访问操作都会导致对数据库运行查询。定义这样的查询就是在存储库接口上声明一个方法,如以下示例所示:
示例 58.带有查询方法的 PersonRepository
interface PersonRepository extends PagingAndS