使用业务实体的自然ID作为主键

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用业务实体的自然ID作为主键相关的知识,希望对你有一定的参考价值。

我想检查一下,是否建议使用自然id(20位varchar)作为表的主键。我正在使用spring-data-jpa。是否存在任何性能问题或此方法的任何利弊

答案

表的主键类型取决于它们的用法。使用大多数长数据类型。如果您的用例是为您的表提供一个自然的主键,它具有特殊含义,如社会安全号码,那么请使用它。如果它是自然键或主键,JPA并不关心它。与生成的主键相比,自然主键的一个区别是,JPA不必执行查询来检索主键的下一个值。但这几乎不是性能问题。

JPA只为您创建查询(插入/更新/删除)并将结果映射到Java对象。

也许这个文档可以帮助你以及https://en.wikibooks.org/wiki/Java_Persistence/Identity_and_Sequencing

以上是关于使用业务实体的自然ID作为主键的主要内容,如果未能解决你的问题,请参考以下文章

hibernate之主键生成策略

JAVAEE学习笔记hibernate02:实体规则对象状态缓存事务批量查询和实现客户列表显示

Spring boot UUID主键实体在创建后不显示正确的ID

如何在实体框架中使用字符串属性作为主键

jpa,多于一个主键

为啥 EF Core 5 不使用我的实体“地址”的“Id”属性上的“[Key]”属性创建“主键自动增量”?