假如有三张表:用户表(Users),商品表(Goods),出价表(Bid)
使用Struts1.x+Spring2.x+Hibernate3.x搭建一个小的项目 xxxx
在Goods表中存在一个Set集合用来存放出价集合:
在表对应的实体文件中:
private Set bids = new HashSet(0);
在映射文件中:
<set name="bids" inverse="true" cascade="all">
<key>
<column name="goods_id" not-null="true" />
</key>
<one-to-many class="y2ssh.wzq.xmal4.entity.Bid" />
</set>
Hibernate3.x的默认为懒加载
那么是使用懒加载 查询出价表中的信息
效率高一些还是 在映射文件中设置 fetch="join" 外连接查询出价信息效率高一些?
为什么?
两种方式有什么不同!
不会有问题,其实在Hibernate.initialize(goods.getBids()); 这句话之后,就算关闭了session,也是可以查询goods.getBids()里面的内容,,因为已经强制实例化了。
懒加载是说当你加载一条记录时,不会通过外键查询其相对应的set集合。
fetch="join",是指当你查询一条记录的相关集合时,是通过使用select * from a join on b方式进行查询,而不是先找到b中对应的记录,再一条条加载。。
默认就是懒加载的