Spring Data JPA 常用注解(二)

Spring Data JPA 常用注解(二)
@Data
@Data
注解通常与 Lombok 的 @Data
注解类似,用于自动生成 Getter、Setter、equals
、hashCode
和 toString
等方法,减少实体类的样板代码。
@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
注解用于指定日期时间属性的精度,可用于 DATE
、TIME
和 TIMESTAMP
类型的属性。
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 注解一起使用时,它们为开发人员提供了更便捷的数据访问和实体类定义方式。