@GeneratedValue,JPA通用策略生成器 。
JPA提供的四种标准用法为IDENTITY,AUTO,TABLE,SEQUENCE
1、IDENTITY——主键由数据库自动生成
@GeneratedValue(strategy = GenerationType.IDENTITY)
MySQL使用AUTO_INCREMENT、微软的SQLServer使用IDENTITY
2、AUTO——自动选择合适的生成策略
@GeneratedValue(strategy = GenerationType.AUTO)
MySQL里面生成一个特殊的表来记录id,默认的表明为hibernate_sequence。另外在数据库新建一个表放置更新的主键,每次都要update,效率较低。
下面是创建User实例后并插入100条数据后,数据库生成的两个表,分别为User和hibernate_sequence。hibernate_sequence中记录了下一个主键的值
通过DEBUG信息,可以看出生成策略大概的运行机制(创建hibernate_sequence表—>插入生成值—>取出值—>更新值)