一尘不染

Hibernate中的自然标识符是什么?

hibernate

在阅读Hibernate文档时,我不断看到对 自然标识符 概念的引用。

这是否仅表示实体因其拥有的数据的性质而具有的ID?

例如,用户名+密码+年龄+某些内容用作复合标识符?


阅读 239

收藏
2020-06-20

共1个答案

一尘不染

在Hibernate中,自然键通常用于查找。在大多数情况下,您将拥有一个自动生成的代理ID。但是,此ID对于查找而言毫无用处,因为您将始终通过名称,社会保险号或其他来自现实世界的字段进行查询。

在使用Hibernate的缓存功能时,这一区别非常重要:如果缓存是由您的主键(代理ID)索引的,则查找不会获得任何性能提升。这就是为什么您可以定义一组要使用自然ID查询数据库的字段的原因。然后,Hibernate可以通过您的自然键为数据建立索引并提高查找性能。

有关更详细的说明,请参见这篇出色的博客文章;有关Hibernate映射文件的示例,请参见RedHat页面

2020-06-20