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

时间:2019-04-13 10:33:32

标签: spring-boot spring-data-jpa

我想检查一下,是否建议使用自然ID(20位varchar)作为表的主键。我正在使用spring-data-jpa。 这种方法是否会出现性能问题或利弊

1 个答案:

答案 0 :(得分:0)

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

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

也许这个文档对您也有帮助https://en.wikibooks.org/wiki/Java_Persistence/Identity_and_Sequencing