我是一名新手,正在学习Hibernate。我使用的是Hibernate 3.5版本,它默认应该使用延迟加载。我已经通过SQL日志启用了SQL查询记录。
<property name="show_sql">true</property>
我请求对象A,它引用了持有实际数据字节数组的对象B。我将数据推送到对象B中,以便不必在真正需要时从数据库获取数据,但是当我请求对象A时,堆跳跃急剧增加,就好像已经获取了数据一样,并且我从Hibernate SQL日志中得到以下输出:
Hibernate: select attachment0_.id as id11_0_, attachment0_.data as data11_0_ from attachment_data attachment0_ where attachment0_.id=?
我对如何解释这个问题不清楚,特别是'as'语句。'attachment0.data'似乎是对象B中的字节数组。Hibernate是在说它为数组创建了代理,还是说它实际上从数据库中提取了数据?如果它只是创建了一个代理,那么我会看不到代理的任何选择输出吗?
因此,总结一下,主要问题是如何确定我是否有代理或真实对象,以及如何解释选择语句?
我已经深入研究了Hibernate文档,并在网上搜索了很多,但大部分信息似乎都超出了我缺少的基本知识范围,所以任何帮助都将不胜感激。