HIbernate lazy fetch

ゞ 浴缸里的玫瑰 2022-08-20 13:06 129阅读 0赞

在映射文件中,不同的组合会使用不同的查询:

1、lazy=”true” fetch = “select” ,使用延迟策略,开始只查询出主对象,关联对象不会查询,只有当用到的时候才会发出sql语句去查询 ;

2、lazy=”false” fetch = “select” ,没有用延迟策略,同时查询出主对象和关联对象,产生1+n条sql.

3、lazy=”true”或lazy=”false” fetch = “join”,延迟都不会作用,因为采用的是外连接查询,同时把主对象和关联对象都查询出来了. 另外,在hql查询中,配置文件中设置的join方式是不起作用的,而在其他查询方式如get、criteria等是有效的,使用 select方式;除非在hql中指定join fetch某个关联对象。fetch策略用于get/load一个对象时,如何获取非lazy的对象/集合。 这些参数在Query中无效。 配置还是缺乏灵活性的,开发中常会有不同的需求,所以在配置中选择默认值,在具体业务中来指定策略。再者对数据库的操作都是使用SQL来执行的,掌握了sql执行性能反过来看这些配置也许很容易了。

发表评论

表情:
评论列表 (有 0 条评论,129人围观)

还没有评论,来说两句吧...

相关阅读

    相关 hibernate加载策略之lazy

    hibernate的加载策略有两种: 1)即时加载:get加载       使用get加载数据,会立即查找,先到缓存中找,找不到再去数据库中找。 2)延迟加载(