POM
1 | <dependency> |
配置
1 | spring.jpa.database=mysql |
- MySQL5InnoDBDialect数据库引擎
ddl-auto
- validate 加载 Hibernate 时,验证创建数据库表结构
- create 每次加载 Hibernate ,重新创建数据库表结构
- create-drop 加载 Hibernate 时创建,sessionFactory关闭退出时删除表结构
- update 加载 Hibernate 自动更新数据库结构
开启
1
2
3
4
5
6
7
8
//自动填充或更新实体中的CreateDate、CreatedBy
public class Startup {
public static void main(String[] args) {
SpringApplication.run(Startup.class, args);
}
}
EnableJpaAuditing审计注解
公共实体
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//该注解标注的类不会映射到数据库中单独的表,该类所拥有的属性都将映射到其子类
public abstract class CommonEntity {
"varchar(20) comment '主键'") (columnDefinition =
private String id;
"int(11) default 0 comment '乐观锁'") (columnDefinition =
private int version;
"timestamp default CURRENT_TIMESTAMP comment '创建时间'") (columnDefinition =
private LocalDateTime createDate;
"timestamp default CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP comment '最后修改时间'") (columnDefinition =
private LocalDateTime lastModifiedDate;
"int(2) default 0 comment '状态:0-有效,1-无效'") (columnDefinition =
private int status;
}超类,公共实体
- Column定义字段、Id定义唯一标识
- columnDefinition定义字段类型、长度、默认值、注释
- CURRENT_TIMESTAMP定义默认的创建和修改时间
审计字段
1 |
|
- 乐观锁
- 创建时间
- 修改时间
###1
2
3
4
5
6
7
8
9
10
11
12
"xx") (name =
"xx", (appliesTo =
comment = "xx表")
public class XXEntity extends CommonEntity {
"varchar(50) COMMENT 'xx'", unique = true) (columnDefinition =
private String name;
"varchar(20) COMMENT 'xx'") (columnDefinition =
"idx_projectId") (name =
private String projectId;
}
- 数据库定义
- 表定义、注释,Table为org.hibernate.annotations.Table
- 索引定义
- 唯一约束