Spring Boot 2.x实战57 - Spring Data 1 - DDD与Spring Data(Repository)

Spring Data 是一个伞型项目,包含主流的数据库的访问技术。这些不同的数据访问项目都使用相同的编程模型,他们都是基于Repository规范接口。我们在本章选关系型数据库的访问技术Spring Data JPA和NoSQL的访问Spring Data Elasticsearch。

1. Spring Data Repository

1.1 DDD与Spring Data
1.1.1 DDD

DDD是Domain-Driven Design的缩写,即领域驱动设计。它是解决复杂业务需求的一些列高级技术。

它的战术设计部分有几个重要概念和Spring Data有关系:

  • 实体(Entity):对一个实际的事物进行抽象建模,每一个实体都有唯一标识用来和其他的实体做为区别;实体是可变的,它会随着时间的推移而修改。
  • 值对象(Value Object):值对象等同于值,它对一个不变的概念的整体进行建模。它没有唯一标识,相等性通过比较值对象的属性来实现;值对象不能被修改只能被替换;它和值一样都是用来描述、量化或衡量实体的。
  • 聚合(Aggregate):聚合是一个或多个实体组合而成的,其中表示核心概念的实体叫做聚合根。在实际设计中有“设计小聚合的原则”,一般情况下一个聚合只包含一个实体类。
  • 领域事件(Domain Event):聚合之间的通讯通过发布领域事件来进行,事件由聚合根发布。
  • (Repository):Respository是用来存储聚合的,每一个聚合都有一个Respository,它们之间是一对一的关系。库中对聚合的存储操作类似于集合类,和Set一样保证数据的唯一性。

我们先举例说明上面的概念:

public class Person {
   
    private Long id;
    private String name;
    private Integer age;
    private Address address;
    private Collection<Child> children;
  	//...
}
  • Person是实体类,因为设计小聚合的原则,Person也是聚合与聚合根;

  • id属性是唯一标识;

  • nameage是值,用来描述实体Person

  • 同样addresschildren也是用来描述某个Person的,是对象形式的,所以它们是值对象。

1.1.2 Spring Data Repository

Spring Data Repository对访问不同的数据库提供统一的抽象,它极大的减少了数据访问层的样板代码。Spring Data Repository抽象的核心是org.springframework.data.repository.Repository<T, ID>T代表是它处理的实体的类型,ID代表实体的唯一标识。它的主要子接口有CrudRepository定义新增、查询、更新、删除功能接口。PagingAndSortingRepository又是CrudRepository的子接口,定义了分页和排序的功能接口。

public interface CrudRepository<T, ID> extends Repository<T, ID> {
   
   <S extends T> S save(S entity)</
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值