Hibernate中序列和身份之间的区别
Hibernate或JPA支持4种不同类型的主键生成器。这些生成器用于在数据库中插入行时生成主键。以下是主键生成器 -
GenerationType.AUTO
GenerationType。身份
GenerationType.SEQUENCE
GenerationType.TABLE
GenerationType。IDENTITY-在identity中,数据库负责自动生成主键。 插入一行而不指定ID的值,然后在插入该行之后,向数据库询问最后生成的ID。Oracle11g不支持身份键生成器。Oracle12c支持此功能。
GenerationType。序列-依次,我们首先向数据库询问序列的下一组,然后插入具有返回序列ID的行。
1个
基本的
数据库负责自动生成主键
我们首先要求数据库提供下一个序列集,然后插入带有返回序列ID的行。
2
性能
它比序列键生成器快
比身份键生成器慢一点
3
数据库支持
Oracle11g不支持身份键生成器
Oracle11g确实支持SEQUENCE键生成器
GenerationType.IDENTITY的示例
@Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) Integer id; String name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
GenerationType.SEQUENCE的示例
@Entity public class User { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE) Integer id; String name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }