Spring Boot 2.x实战59 - Spring Data 3 - DDD下Spring Data JPA(聚合、值对象、库的定义与使用)

本文介绍了如何在Spring Boot 2.x中使用Spring Data JPA进行领域驱动设计(DDD),详细讲解了如何定义聚合,包括实体、ID、值对象、列表值对象以及属性校验。同时,阐述了如何定义聚合Repository,实现保存和删除操作。此外,还提及了一本涵盖Spring Boot开发相关知识的新书。
摘要由CSDN通过智能技术生成
2.4 定义聚合
2.4.1 定义实体

我们使用javax.persistence.Entity注解来定实体类:

@Entity
public class Person {
   }

一个实体类会映射数据库的一张表,我们启用了spring.jpa.hibernate.ddl-auto: update,Spring Data会自动为我们建一个首字母小写的表person

我们可以通过@Table(name = "tb_person")来定制的表名。

2.4.2 定义Id

我们使用javax.persistence.Id注解来定义唯一标识,它会和数据库的主键映射;使用javax.persistence.GeneratedValue注解来指定唯一标识的产生策略。

@Entity
public class Person {
   
    @Id
    @GeneratedValue
    private Long id;
}

@GeneratedValue默认使用自动选择唯一标识产生策略,在MySQL下自动使用Hibernate为我们生成的hibernate_sequence表。我们可以使用@GeneratedValuegenerator属性配合@SequenceGenerator@TableGenerator来指定id生成器。

2.4.3 定义值

我们使用javax.persistence.Column来定义一个属性值,它会和数据库的字段映射;当我们不使用它的时候,实体的值会自动映射为表的字段。命名规则是将驼峰式的属性名转换成下划线的字段名(如lastName映射成last_name)。

@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
public class Person {
   
    @Id
    @GeneratedValue
    private Long id;
   
    @Column(name = "name", length = 10)
    private String name;

    private Integer age;
  
    private Boolean active = true; 
    }
    
}
2.4.4 定义单个值对象

值对象要通过javax.persistence.Embeddable注解表明它是实体的一部分。在实体上用javax.persistence.Embedded来组合。

@Data
@AllArgsConstructor
@NoArgsConstructor
@Embeddable
public class Address {
   
    private String city;
    private String province;
}

Address的属性会映射到Person表里的字段。

@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
public class Person {
   
    @Id
    @GeneratedValue
    private Long id;
    @Column
    private String name;

    private Integer age;

    @Embedded
    private Address address;
<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值