@GeneratedValue是JPA的标准用法,
JPA提供四种标准用法,由@GeneratedValue的源代码可以看出.
public enum GenerationType {
TABLE,
SEQUENCE,
IDENTITY,
AUTO;
}.
TABLE:使用一个特定的数据库表格来保存主键。
SEQUENCE:根据底层数据库的序列来生成主键,条件是数据库支持序列。
IDENTITY:主键由数据库自动生成(主要是自动增长型) 主键则由数据库自动维护,使用起来很简单
AUTO:主键由程序控制。
在指定主键时,如果不指定主键生成策略,默认为AUTO。
mysql数据库一般使用IDENTITY
@Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") private int id;
JPA全称Java Persistence API,是sun公司针对ORM技术提出的技术规范,用来将POJO按照标准的方式进行持久化,很类似于JDBC规范。Hibernate最早是以ORM框架形式出现的,用来解决JDBC存在的问题。随着JPA标准的发展和完善,hibernate到后来也开始支持JPA规范,并且能够完全兼容JPA规范。也就说,hibernate是JPA标准的一个实现,还在此基础上增加了一些自己特有的功能。这就是我们常说的:JPA是hibernate的一个子集,hibernate是JPA的超集。