Hibernate获取和加载方法

时间:2015-07-30 09:15:57

标签: hibernate load

  

我对这两种方法有基本的了解,但我对Load()方法几乎没有顾虑:   1.如果class是final或者没有提供默认构造函数,那么在这种情况下,load将始终命中数据库或抛出错误,因为它无法创建代理类?   2.如果在第一级或第二级缓存中找到对象,它将返回完整对象或代理对象吗?

对于Get方法 1.如果在缓存中找到对象,它将无法访问数据库?

1 个答案:

答案 0 :(得分:1)

根据我的理解,

加载会点击缓存,获取也会尝试点击缓存。

如果加载获取缓存中的对象,则返回if not, it returns just a proxy object with the given identifier set

如果获取,则从其返回的缓存中获取对象if not, it goes to DB and returns the found object, if not present returns null

如果加载,如果返回代理对象,则在保存/更新对象时抛出org.hibernate.ObjectNotFoundException,此时查询对象的标识符不存在于数据库中。 / p>

因此,当您确定在数据库中具有针对查询标识符的对象时,基本上使用Load,它的使用应该是我们只需要更新一些属性的地方。