【发布时间】:2011-03-18 10:09:45
【问题描述】:
这里是休眠的新手。我正在使用 Hibernate 3.5,据我所知,默认情况下应该使用延迟获取。我通过
启用了 SQL 日志记录<property name="show_sql">true</property>
我正在请求对象 A,它具有对对象 B 的引用,该对象 B 包含实际的字节数据数组。我将数据推送到对象 B 中,这样除非真的需要,否则不会从数据库中获取数据,但是当我请求对象 A 时,堆会急剧跳跃,就好像它无论如何都获取了数据一样,我从休眠中得到了这个输出SQL 日志记录:
Hibernate: select attachment0_.id as id11_0_, attachment0_.data as data11_0_ from attachment_data attachment0_ where attachment0_.id=?
我不清楚如何解释这一点,特别是“as”语句。 'attachment0.data' 似乎是对象 B 中的字节数组。休眠状态是说它为数组创建了代理,还是说它实际上是从数据库中提取数据?如果它只是创建了一个代理,我会看不到代理的选择输出吗?
所以总而言之,主要问题是如何确定我是否拥有代理或真实对象,以及如何解释 select 语句的相关问题?
我已经深入研究了 hibernate 文档,并在网上搜索了很多信息,但大多数信息似乎比我所缺少的基本知识高出一步,因此非常感谢任何帮助。
【问题讨论】:
-
attachment_data是映射到对象A还是对象B的表?