`
liyiye
  • 浏览: 416429 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

几种主键生成策略的比较

阅读更多

通过以上的讲述,不难总结出 JPA 可定义的生成策略有四种: TABLE SEQUENCE, IDENTITY AUTO 。在选择这四种主键生成策略时,有如下几条建议。

l          SEQUENCE IDENTITY 两种策略由于针对的是特殊的一些数据库,所以如果在需求前期,未确定系统要支持的数据库类型时,最好不要使用。因为一旦更改数据库类型时,例如从 Oracle 变更为 MySQL 时,此时使用的 Sequence 策略就不能使用了,这时候需要变更设置,会变得很麻烦。

l          AUTO 自动生成策略虽然能够自动生成主键,但主键的生成规则是 JPA 的实现者来确定的,一旦使用了这种策略,用户没有办法控制,比如说初识值是多少,每次累加值是多少,这些只能靠 JPA 默认的实现来生成。对于比较简单的主键,对主键生成策略要求少时,采用的这种方式比较好。

l          TABLE 生成策略是将主键的值持久化在数据库中表中,因为只要是关系型的数据库,都可以创建一个表,来专门保存生成的值,这样就消除了不同数据库之间的不兼容性。另外,这种策略也可是设置具体的生成策略,又弥补了 AUTO 策略的不足。所以,这种策略既能保证支持多种数据库,又有一定的灵活性,建议使用该策略。

l          若以上的 4 种主键生成策略仍不满足需求,这时可以通过一定的规则来设置主键的值。例如利用 UUID 作为主键,也是常用的策略之一,此时就需要在程序中自动生成,然后设置到实体的主键上,而不能通过 JPA 的主键生成策略来实现了。

总之,在选择主键生成策略时,要根据需求,选择最合适的策略。

分享到:
评论

相关推荐

    Hibernate主键生成策略

    描述和比较hibernate主键的生成策略。hibernate主键的几种属性。

    Hibernate主键生成策略.docx

    hibernate 的主键的几种生成类型的区别,主要有那些主键类型

    Java面试宝典2020修订版V1.0.1.doc

    目录 ... 11 2、CSS样式定义优先级顺序是?...20、Hibernate的主键生成策略? 94 21、Hibernate的级联操作 94 22、Hibernate有哪5个核心接口? 95 23、什么是重量级?什么是轻量级? 95 24、谈谈Spring的IOC和DI

    POJOGenerator v1.3.3 Install(可视化POJO代码生成器最终版)

    知档,其中,ID列名默认使用主键名称(若为复合主键则采用次序排首位的主键列名) ,而Oracle环境下的sequence对象名称则为“seq_表名_id”格式的默认名称,请根据 实际情况修改。该配置档用于CmSdk4j-Core框架的ORM...

    精通hibernate:对象持久化技术孙卫琴第二版part2

    本章主要介绍关系数据库中的代理主键(不具有业务含义),接着介绍Hibernate提供的几种内置标识符生成器的用法及适用范围。 6.1 关系数据库按主键区分不同的记录 123 6.1.1 把主键定义为自动增长标识符类型 123 ...

    精通Hibernate:对象持久化技术第二版part3

    本章主要介绍关系数据库中的代理主键(不具有业务含义),接着介绍Hibernate提供的几种内置标识符生成器的用法及适用范围。 6.1 关系数据库按主键区分不同的记录 123 6.1.1 把主键定义为自动增长标识符类型 123 ...

    asp.net知识库

    通过DataTable获得表的主键 ADO.NET 2.0 操作实例 ADO.NET 2.0 大批量数据操作和多个动态的结果集 ADO.NET 2.0 异步处理 在ASP.NET中使用WINDOWS验证方式连接SQL SERVER数据库 改进ADO.Net数据库访问方式 ASP.NET ...

    java面试800题

    " "ORACLE里锁有以下几种模式: 0:none 1:null 空 2:Row-S 行共享(RS):共享表锁 3:Row-X 行专用(RX):用于行的修改 4:Share 共享锁(S):阻止其他DML操作 5:S/Row-X 共享行专用(SRX):阻止其他事务...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    在创建表时,经常会创建该表的主键、外键、唯一约束、Check约束等  语法结构 create table 表名( [字段名] [类型] [约束] ……….. CONSTRAINT fk_column FOREIGN KEY(column1,column2,…..column_n) ...

    大数据仓库与大数据挖掘课程教学设计.doc

    多维视图:用包含度量和维的表的数据结构可以创建一个多维视图,用试题和维创建 的多维模型称为星型模型,星型模型生成的主要表格被称为事实表。事实表的属性值几 乎都有连续值。事实表是规范化的。与维表不同不是...

    人人都应该掌握的一些电脑操作技巧

    首先选择优化王下的“卸载软件”功能,然后切换到“专业卸载”选项卡,此处提供了18种软件的卸载功能。超级兔子优化王软件会自动对系统进行检测,若装有该程序的话此处便会显示“已安装”,接着选中要卸载 十六、...

    勤哲excel服务器2010教程

    5.8 设置主键,保证录入数据的唯一性。 70 5.9 本章练习 71 第6章、 管理业务数据 73 6.1 定义重复数据项 73 6.2 动态取值的下拉列表 76 6.3 用表间公式提取数据 79 6.3.1 定义表间公式 79 6.3.2 应用表间公式 86 ...

Global site tag (gtag.js) - Google Analytics