bru*_*azi 5 java orm caching hibernate natural-key
使用Hibernate的@NaturalId查找对象有什么好处吗?
我担心Hibernate使用@NaturalId执行两个查询以获取对象这一事实.第一个查询只是为了获取id和第二个查询来加载真实对象.
正如我在本文中解释的那样,主要的优点是您可以使用Cache来解析实体而无需访问数据库.
当ResolveNaturalIdEvent被抛出时,Hibernate会尝试:
如果第一级缓存无法满足我们的请求,则回退到数据库查询
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 );
Run Code Online (Sandbox Code Playgroud)因此,它与使用通过持久性上下文API加载的实体(例如EntityManager.find())具有相同的好处.
执行两个查询的唯一时间是实体尚未缓存(第一级或第二级缓存).
| 归档时间: |
|
| 查看次数: |
1823 次 |
| 最近记录: |