该链接是关于Java Persistence API的,并且似乎定期更新。http://en.wikibooks.org/wiki/Java_Persistence/Identity_and_Sequencing
身份排序使用数据库中的特殊IDENTITY列来允许数据库在插入对象的行时自动为其分配ID。许多数据库(例如 都支持标识列。Oracle不支持IDENTITY列,但可以使用序列对象和触发器来模拟它们。
序列对象使用特殊的数据库对象来生成ID。仅某些数据库(例如 支持序列对象。通常,SEQUENCE对象具有名称,INCREMENT和其他数据库对象设置。每次选择.NEXTVAL时,序列都会增加INCREMENT。
如果诸如DB2之类的数据库同时支持IDENTITY列,并且“hibernate”序列选择“身份”列,请参见Dialect:
public Class getNativeIdentifierGeneratorClass() {
if ( supportsIdentityColumns() ) {
return IdentityGenerator.class;
}
else if ( supportsSequences() ) {
return SequenceGenerator.class;
}
else {
return TableHiLoGenerator.class;
}
}
您可以通过查看org.hibernate.dialect
包中的相关方言来检查每个数据库的supportsIdentityColumns()和supportsSequences()返回的内容。