Hibernate 是一级缓存中的对象
如何确定某个Hibernate 是一级缓存中的对象,hibernate,nhibernate,caching,Hibernate,Nhibernate,Caching,如何确定某个HibernateProxy是否在一级缓存中 代码大致相同 for (HibernateObject obj : objects) { if (HibernateUtils.isHibernateProxyInCache( obj.getExpensiveLazyObject()) ) { display(obj.getExpensiveLazyObject()); } else { display("click
HibernateProxy
是否在一级缓存中
代码大致相同
for (HibernateObject obj : objects) {
if (HibernateUtils.isHibernateProxyInCache(
obj.getExpensiveLazyObject())
) {
display(obj.getExpensiveLazyObject());
} else {
display("click here to see expensive lazy object");
}
}
我需要的代码是HibernateUtils.isHibernateProxyInCache,但我不知道如何实现它。我想您正在寻找
调用HibernateUtils.isHibernateProxyInCache(obj.getExpensiveLazyObject())会将代理初始化为昂贵的惰性对象,因此您的方法将始终返回true。您是说只要调用
getX
就会初始化代理吗?你能给我一个说明这一点的文件的链接吗?因此,如果我理解正确,我需要执行Hibernate.isPropertyInitialized(obj,“expensiveLazyObject”)
,对吗?抱歉,我误解了。您可能只需要Hibernate.isInitialized(obj.getExpensiveLazyObject())。谢谢。但我不确定我是否理解“初始化”的含义。你能让我看一下这些文件吗?我不确定“initialized”是否表示“在一级缓存中”。initialized表示“代理已初始化”。最初,实体的代理仅保留实体的ID。一旦调用代理对象上的任何方法,它首先从数据库加载实际实体实例及其所有字段,然后委托给该实体实例以执行该方法。初始化表示“实体状态已从数据库加载”。如果代理仍然连接到其Hibernate会话,则初始化的代理应该在缓存中。如果它不是您需要的,那么请详细说明,并查看会话中包含的方法。