一尘不染

@GeneratedValue(strategy =“ IDENTITY”)与@GeneratedValue(strategy =“ SEQUENCE”)

hibernate

我是新来的hibernate。我不了解以下两种主要的密钥生成策略:

  1. 身分识别
  2. 序列

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


阅读 516

收藏
2020-06-20

共1个答案

一尘不染

引用Java持久性/标识和排序

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

用简单的英语来说:您最多ID将表中的一列标记为IDENTITY。数据库引擎将自动为您输入 下一个可用 值。

和:

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

序列更灵活,稍微复杂一些。您可以在数据库中的表,触发器等旁边定义一个额外的对象,称为 sequence
。序列基本上被称为计数器,您可以在查询中的任何地方使用。

2020-06-20