Spring Data JPA 常用注解(二)

58
0
0
2020-10-30
Spring Data JPA 常用注解(二)

Spring Data JPA 常用注解(二)

@Data

@Data 注解通常与 Lombok 的 @Data 注解类似,用于自动生成 Getter、Setter、equalshashCodetoString 等方法,减少实体类的样板代码。

@Data
public class Example {
    private String field1;
    private int field2;
    // 省略其他属性和方法
}

@NoArgsConstructor

@NoArgsConstructor 注解用于生成一个无参构造函数,通常用于 JPA 实体类,以确保 JPA 能够正确实例化实体。

@NoArgsConstructor
public class Example {
    private String field1;
    private int field2;
    // 省略其他属性和方法
}

@AllArgsConstructor

@AllArgsConstructor 注解用于生成一个包含所有属性的构造函数,通常用于创建实体对象时,同时初始化所有属性。

@AllArgsConstructor
public class Example {
    private String field1;
    private int field2;
    // 省略其他属性和方法
}

@Builder

@Builder 注解用于生成建造者模式的构造方法,允许通过链式调用设置实体属性。

@Builder
public class Example {
    private String field1;
    private int field2;
    // 省略其他属性和方法
}

@Transient

@Transient 注解用于标记一个属性为不持久化的,不会映射到数据库表的列。

public class Example {
    private String field1;
    @Transient
    private String transientField; // 不会映射到数据库
    // 省略其他属性和方法
}

@Temporal

@Temporal 注解用于指定日期时间属性的精度,可用于 DATETIMETIMESTAMP 类型的属性。

public class Example {
    private String name;
    @Temporal(TemporalType.DATE)
    private Date birthDate; // 指定日期精度
    // 省略其他属性和方法
}

@Enumerated

@Enumerated 注解用于枚举属性的映射,指定枚举类型如何与数据库列映射。

public class Example {
    private String name;
    @Enumerated(EnumType.STRING)
    private Gender gender; // 枚举类型映射
    // 省略其他属性和方法
}

@Lob

@Lob 注解用于指定属性为大对象(LOB),通常用于映射大文本、大二进制数据等。

public class Example {
    private String name;
    @Lob
    private String description; // 大对象映射
    // 省略其他属性和方法
}

@Version

@Version 注解用于标识版本属性,通常与乐观锁控制一起使用。

public class Example {
    private String name;
    @Version
    private int version; // 乐观锁版本属性
    // 省略其他属性和方法
}

@NotNull 和 @Size

@NotNull@Size 注解用于定义属性的验证规则,确保属性值的有效性。

public class Example {
    @NotNull
    @Size(min = 2, max = 50)
    private String name; // 非空且长度在2到50之间
    // 省略其他属性和方法
}

@QueryResult

@QueryResult 注解用于将查询的结果映射到自定义结果类。

@QueryResult
public class CustomResult {
    private String field1;
    private int field2;
    // 省略其他属性和方法
}

@QueryResult public class CustomResult { private String field1; private int field2; // 省略其他属性和方法 }

这些注解可以帮助简化实体类的代码编写和维护,提高代码的可读性和可维护性。与 Spring Data JPA 注解一起使用时,它们为开发人员提供了更便捷的数据访问和实体类定义方式。