2012-08-09 78 views
0

环境负荷:Java中,休眠java对象相等时的对象从数据库

可以说我执行两个数据库查询:

伪代码:

Author au1 = execute_query_1 
Author au2 = execute_query_2 

让我们假设两个查询返回来自db的相同记录。

是否可以安全地说,声明:

au1.equals(au2) 

将返回true?

回答

1

是的,如果你用同一个会话执行你的查询。 Hibernate将简单地从缓存中取出它。

+0

这意味着hibernate将使用它的第一级(会话)缓存,并且不会尝试再次从db中获取实例? – geo 2012-08-09 10:42:20

+0

默认是,但可能是可配置的。 – evg 2012-08-09 10:44:04

0

如果对象Author覆盖equals()方法,则它是完全安全的。如果没有,就和输入au1 == au2一样,它可以返回任何东西,但这可能是两个不同的实例。好的事情是为它写一个自动化测试