您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

对于主要数据库,实际上为“ GenerationType.AUTO”选择了什么策略?

对于主要数据库,实际上为“ GenerationType.AUTO”选择了什么策略?

链接是关于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()返回的内容

其他 2022/1/1 18:15:29 有667人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶