0
环境负荷:Java中,休眠java对象相等时的对象从数据库
可以说我执行两个数据库查询:
伪代码:
Author au1 = execute_query_1
Author au2 = execute_query_2
让我们假设两个查询返回来自db的相同记录。
是否可以安全地说,声明:
au1.equals(au2)
将返回true?
环境负荷:Java中,休眠java对象相等时的对象从数据库
可以说我执行两个数据库查询:
伪代码:
Author au1 = execute_query_1
Author au2 = execute_query_2
让我们假设两个查询返回来自db的相同记录。
是否可以安全地说,声明:
au1.equals(au2)
将返回true?
是的,如果你用同一个会话执行你的查询。 Hibernate将简单地从缓存中取出它。
如果对象Author覆盖equals()方法,则它是完全安全的。如果没有,就和输入au1 == au2一样,它可以返回任何东西,但这可能是两个不同的实例。好的事情是为它写一个自动化测试
这意味着hibernate将使用它的第一级(会话)缓存,并且不会尝试再次从db中获取实例? – geo 2012-08-09 10:42:20
默认是,但可能是可配置的。 – evg 2012-08-09 10:44:04