SpringJpa学习教程-05对象注解学习
@Entity
定义对象是一个可以被JPA进行管理的实体,全局唯一,不可重复
@Table
指定需要在数据库匹配的数据库表名
//表名,可选,默认为实体名
String name() default "";
// 表的catalog
String catalog() default "";
// 表所在的schema
String schema() default "";
// 唯一性约束
UniqueConstraint[] uniqueConstraints() default {};
// 索引,创建表时需要,其他的时候可忽略,如果是主键,默认会创建索引
Index[] indexes() default {};
@Id
定义数据库的主键,每一个被JPA管理的实体,必须存在一个,如果没有,将会在启动的时候报错
@IdClass
外部类的联合主键
@GeneratedValue
主键生成策略
// 通过表产生主键
GenerationType.TABLE,
// 通过序列产生主键,MySQL不支持此方式
GenerationType.SEQUENCE,
// 数据库ID自增长,一般用于MySQL
GenerationType.IDENTITY,
// JPA自动选择合适的策略,也是默认选项
GenerationType.AUTO
@Basic
需要放置在那些已经被序列化的对象上,如果对象已经被序列化,那么默认此注解就已经放上去了
// 可选项,决定字段或属性是否需要延时加载,默认是立即加载,选择Lazy则是延时
// 对大对象调用时,适合使用
FetchType fetch() default EAGER;
// 可选项,是否允许字段为空
boolean optional() default true;
@Column
定义属性与对应数据库表名字段的对应
// 列名
String name() default "";
// 值是否唯一
boolean unique() default false;
// 是否为空
boolean nullable() default true;
// 是否可插入
boolean insertable() default true;
// 是否可更新
boolean updatable() default true;
// 字段在数据库的实际类型
String columnDefinition() default "";
// 表明
String table() default "";
// 字段长度
int length() default 255;
// 小数的精确程度
int precision() default 0;
// 数字刻度
int scale() default 0;
@Temporal
可设置Date类型的属性映射到数据库对应字段的精度
// 日期
TemporalType.DATE,
// 时间
TemporalType.TIME,
// 时间戳:日期+时间
TemporalType.TIMESTAMP
@Enumerated
可直接映射枚举类型的字段到属性
// 持久化枚举类型或属性为int
EnumType.ORDINAL,
// 持久化枚举类型或属性为String
EnumType.STRING
@Lob
将属性映射成数据库支持的大对象类型,支持以下类型:
- Clob(字符大类型):如普通文本文件等
- Blob(字节大类型):如音频/视频等