通过annotation(注解)来映射hibernate实体的,基于annotation的hibernate主键标识为@Id, 其生成规则由@GeneratedValue设定的.这里的@id和@GeneratedValue都是JPA的标准用法。
JPA提供的四种标准用法为TABLE,SEQUENCE,IDENTITY,AUTO。
IDENTITY:自增
主键由数据库(比如mysql)自动生成(主要是自动增长型)
前提:
- 底层数据库必须支持自动增长(调用底层数据库的自增方式,对id自增)
用法:
@Id//声明当前私有属性为主键
@GeneratedValue(strategy= GenerationType.IDENTITY) //配置主键的生成策略
@Column(name="cust_id") //指定和表中cust_id字段的映射关系
private Long custId;
- 会用
SEQUENCE:序列
根据底层数据库比如mysql(oracle)的序列来生成主键,条件是数据库支持序列。
- 会用
table:jpa提供的中间表
jpa提供的一种机制,通过一张数据库表的形式完成主键自增,这张表有jpa控制
- 理解即可
Auto:
由程序自动帮我们选择主键生成策略
- 理解即可
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long custId;