Spring Data JPA的@Entity注解
基础注解
@Entity
源码
public @interface Entity {
// 可选,默认是此实体类的名字,全局唯一
String name() default "";
}
@Entity定义对象将会成为被JPA管理的实体,将映射到指定的数据库表。
@Table
用于指定数据库表的表名
源码
package javax.persistence;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Table {
// 表的名字,可选。如果不填写,系统认为和实体的名字一样为表名
String name() default "";
// 此表的catalog,可选
String catalog() default "";
// 此表的schema,可选
String schema() default "";
// 唯一性约束,只有创建表的时候有用,默认不需要
UniqueConstraint[] uniqueConstraints() default {};
//索引,只有创建表的时候使用,默认不需要
Index[] indexes() default {};
}
@Id
@Id定义属性为数据库的主键,一个实体里面必须有一个
@GeneratedValue
源码
@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface GeneratedValue {
// Id的生成策略
GenerationType strategy() default GenerationType.AUTO;
// 通过Sequence生成Id,常见的是Oracle数据库Id生成规则,需要配合@SequenceGenerator使用
String generator() default "";
}
GenerationType一共有四个值
public enum GenerationType {
// 通过表产生主键,框架由表模拟序列产生主键,使用该策略可以使应用更易于数据库移植
TABLE,
// 通过序列产生主键,通过@SequenceGenerator注解指定序列名称,MySQL不支持这种方式
SEQUENCE,
// 采用数据库ID自增长,一般用于MYSQL数据库
IDENTITY,
// JPA自动选择合适的策略,是默认选项。
AUTO;
private GenerationType() {
}
}
@Basic
@Basic表示属性是到数据库表的字段的映射。如果实体的字段没有任何注解,默认即为@Basic
@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Basic {
// 可选,EAGER为立即加载,LAZY为延迟加载
FetchType fetch() default FetchType.EAGER;
// 可选,设置这个字段是否为null,默认为true
boolean optional() default true;
}
@Transient
@Transient表示该属性并非一个到数据库表字段的映射,表示持久化属性,与@Basic作用相反。JPA映射数据库的时候就会忽略它。
@Column
源码