我是新来的hibernate。我不了解以下两种主要的密钥生成策略:
有人可以解释这两个是如何工作的,两者之间有什么区别?
引用Java持久性/标识和排序:
身份 排序使用数据库中的 特殊IDENTITY列 来允许数据库在插入对象的行时自动为其分配ID。许多数据库(例如 MySQL,DB2,SQL Server,Sybase和Postgres) 都支持标识列。Oracle不支持IDENTITY列,但是可以使用序列对象和触发器来模拟它们。
用简单的英语来说:您最多ID将表中的一列标记为IDENTITY。数据库引擎将自动为您输入 下一个可用 值。
ID
和:
序列 对象使用 特殊的数据库对象 来生成ID。仅某些数据库(例如 Oracle,DB2和Postgres) 支持序列对象。通常,SEQUENCE对象具有名称,INCREMENT和其他数据库对象设置。每次<sequence>.NEXTVAL选择时,序列都会增加INCREMENT。
<sequence>.NEXTVAL
序列更灵活,稍微复杂一些。您可以在数据库中的表,触发器等旁边定义一个额外的对象,称为 sequence 。序列基本上被称为计数器,您可以在查询中的任何地方使用。