一、核心概念
1、核心接口
SpringData中的存储库抽象层的核心接口是:Repository
,它是用来管理领域类对象和使用域对象的标识符类型作为类型参数。
它是一个标记接口,用来捕获要工作的类型,以及帮助我们发现继承自该接口的接口
有两个继承的子接口:CrudRepository
和ListCrudRepository
,提供了操作实体的具体的功能方法。
1)CrudRepository 接口
1 |
|
2)ListCrudRepository 接口
ListCrudRepository
接口只是将CrudRepository
中返回迭代对象的接口,换成了返回列表
1 |
|
3)PagingAndSortingRepository 和 ListPagingAndSortingRepository 接口
1 |
|
1 |
|
2、实体状态检测策略
下面是Spring Data提供的用来检测一个实体是不是新实体的策略
Id
属性默认情况下,Spring Data通过实体的标识(
@Id
)来判断:如果标识是null
或0
值,那么实体就会被认为是新实体,反之亦然。@Version
属性如果属性使用了
@Version
注解并且属性值为null
,或者版本属性值为0
的情况下,那么实体会被认为是新实体;如果有版本属性注解且有一个不同的值,那么认为实体不是新实体;如果没有使用@Version
注解,那么就会使用Id标识来进行判断实现
Persistable
接口如果实体实现了
Persistable
接口,Spring Data将会使用该接口的isNew()
方法进行判断1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17public interface Persistable<ID> {
/**
* Returns the id of the entity.
*
* @return the id. Can be {@literal null}.
*/
ID getId();
/**
* Returns if the {@code Persistable} is new or was persisted already.
*
* @return if {@literal true} the object is new.
*/
boolean isNew();
}自定义一个实现了
EntityInformation
接口的repository工厂类,然后覆盖其中的getEntityInformation()
方法(一般不建议使用)
扫描二维码,分享此文章