@GeneratedValue(strategy ="IDENTITY")与@GeneratedValue(strategy ="SEQUENCE")

n_g*_*n_g 35 java hibernate jpa

我刚接触休眠.我不明白以下两个主键生成策略:

  1. 身分
  2. 序列

有人可以解释一下这两者是如何工作的,这两者有什么区别?

Tom*_*icz 60

引用Java持久性/身份和排序:

标识排序使用数据库中的特殊IDENTITY列,以允许数据库在插入行时自动为对象分配id.许多数据库都支持标识列,例如MySQL,DB2,SQL Server,Sybase和Postgres.Oracle不支持IDENTITY列,但可以通过使用序列对象和触发器来模拟它们.

用简单的英语:您ID在表格中最多标记一列为IDENTITY.数据库引擎将自动为您提供下一个可用值.

和:

序列对象使用特殊的数据库对象来生成id.序列对象仅在某些数据库中受支持,例如Oracle,DB2和Postgres.通常,SEQUENCE对象具有名称,INCREMENT和其他数据库对象设置.每次<sequence>.NEXTVAL选择时,序列都会通过INCREMENT递增.

序列更灵活,更复杂.您可以在数据库中定义一个名为序列的表,触发器等旁边的额外对象.序列基本上命名为计数器,您可以在查询内的任何位置使用