gpt4 book ai didi

java - 使用 Hibernate @NaturalId 查找实体有什么好处

转载 作者:搜寻专家 更新时间:2023-10-31 19:27:39 30 4
gpt4 key购买 nike

使用 Hibernate 的@NaturalId 查找对象有什么优势吗?

我担心 Hibernate 使用 @NaturalId 执行两个查询来获取对象这一事实。 第一个查询只是为了获取 id,第二个查询是为了加载真实对象。

最佳答案

主要优点是您可以使用缓存来解析实体而无需访问数据库。

ResolveNaturalIdEvent抛出事件,Hibernate 将尝试:

  • 从一级缓存中加载关联的实体id

  • 从二级缓存中加载关联的实体 id(如果启用)

  • 如果一级缓存不能满足我们的请求,回退到数据库查询

      Serializable entityId = resolveFromCache( event );
    if ( entityId != null ) {
    if ( traceEnabled )
    LOG.tracev( "Resolved object in cache: {0}",
    MessageHelper.infoString( persister, event.getNaturalIdValues(), event.getSession().getFactory() ) );
    return entityId;
    }

    return loadFromDatasource( event );

因此,它与通过 Persistence Context API(例如 EntityManager.find())使用实体加载的好处相同。

执行两个查询的唯一时间是实体尚未缓存(一级或二级缓存)。

关于java - 使用 Hibernate @NaturalId 查找实体有什么好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28180060/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com