通过以上的讲述,不难总结出
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 的主键的几种生成类型的区别,主要有那些主键类型
目录 ... 11 2、CSS样式定义优先级顺序是?...20、Hibernate的主键生成策略? 94 21、Hibernate的级联操作 94 22、Hibernate有哪5个核心接口? 95 23、什么是重量级?什么是轻量级? 95 24、谈谈Spring的IOC和DI
知档,其中,ID列名默认使用主键名称(若为复合主键则采用次序排首位的主键列名) ,而Oracle环境下的sequence对象名称则为“seq_表名_id”格式的默认名称,请根据 实际情况修改。该配置档用于CmSdk4j-Core框架的ORM...
本章主要介绍关系数据库中的代理主键(不具有业务含义),接着介绍Hibernate提供的几种内置标识符生成器的用法及适用范围。 6.1 关系数据库按主键区分不同的记录 123 6.1.1 把主键定义为自动增长标识符类型 123 ...
本章主要介绍关系数据库中的代理主键(不具有业务含义),接着介绍Hibernate提供的几种内置标识符生成器的用法及适用范围。 6.1 关系数据库按主键区分不同的记录 123 6.1.1 把主键定义为自动增长标识符类型 123 ...
通过DataTable获得表的主键 ADO.NET 2.0 操作实例 ADO.NET 2.0 大批量数据操作和多个动态的结果集 ADO.NET 2.0 异步处理 在ASP.NET中使用WINDOWS验证方式连接SQL SERVER数据库 改进ADO.Net数据库访问方式 ASP.NET ...
" "ORACLE里锁有以下几种模式: 0:none 1:null 空 2:Row-S 行共享(RS):共享表锁 3:Row-X 行专用(RX):用于行的修改 4:Share 共享锁(S):阻止其他DML操作 5:S/Row-X 共享行专用(SRX):阻止其他事务...
在创建表时,经常会创建该表的主键、外键、唯一约束、Check约束等 语法结构 create table 表名( [字段名] [类型] [约束] ……….. CONSTRAINT fk_column FOREIGN KEY(column1,column2,…..column_n) ...
多维视图:用包含度量和维的表的数据结构可以创建一个多维视图,用试题和维创建 的多维模型称为星型模型,星型模型生成的主要表格被称为事实表。事实表的属性值几 乎都有连续值。事实表是规范化的。与维表不同不是...
首先选择优化王下的“卸载软件”功能,然后切换到“专业卸载”选项卡,此处提供了18种软件的卸载功能。超级兔子优化王软件会自动对系统进行检测,若装有该程序的话此处便会显示“已安装”,接着选中要卸载 十六、...
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 ...