首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Hibernate fetch=join/select不适用于HQL吗?

Hibernate中的fetch属性用于控制关联关系的加载方式,包括fetch=join和fetch=select两种方式。fetch=join会在查询时立即加载关联对象,而fetch=select会在需要时延迟加载关联对象。

在Hibernate中,fetch属性可以用于HQL(Hibernate Query Language)查询语句中,但是需要注意的是,fetch=join和fetch=select在HQL中的使用方式略有不同。

对于fetch=join,可以直接在HQL查询语句中使用关联属性进行关联查询,例如:

代码语言:txt
复制
SELECT p FROM Person p JOIN FETCH p.address

这样会立即加载Person对象的关联属性address。

对于fetch=select,HQL中不能直接使用fetch属性,而是需要使用Hibernate的fetch()方法来指定关联属性的加载方式,例如:

代码语言:txt
复制
SELECT p FROM Person p
LEFT JOIN FETCH p.address

这样会延迟加载Person对象的关联属性address。

需要注意的是,fetch=join会将关联对象的数据一起查询出来,可以减少数据库查询次数,但可能会导致数据冗余和性能问题。而fetch=select会在需要时才加载关联对象,可以避免数据冗余和性能问题,但可能会增加数据库查询次数。

根据具体的业务需求和性能要求,选择合适的fetch属性和加载方式。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

你不一定会用的JPA(Hibernate)的fetch all properties

导读 HQL(JPQL)在执行查询时提供了一个”fetch all properties“选项,乍一看该关键字就不难猜到它的作用就是用于”立即抓取“延迟加载的属性。...只要添加“join fetch”即可,只要将程序中createQuery()的JPQL(HQL)改为如下形式: List pl = sess.createQuery("select p...如果你希望JPA(Hibernate)在底层使用多表连接语句抓取集合属性(包括关联实体),你需要显式使用"xxx join"或“xxx join fetch”来执行连接,单纯地使用“fetch all....setParameter("age", 30) .getResultList(); 注意上面JPQL(HQL)增加了“fetch all properties”选项,这样JPA(Hibernate...——这种场景在实际开发中常见?太常见了!只要你真正在企业开发,那就肯定会见到这种情况。 而“fetch all properties”选项就是在这种场景下发挥作用的。

1.8K20
  • day31_Hibernate学习笔记_03

    (订单)时才加载,普通select语句,如果你使用集合只是为了获得集合的长度,则Hibernate只会发送count语句查询集合长度         join        true    因为查询集合...            select      (默认值)使用普通select加载             join        使用表连接加载数据         fetch       lazy...().commit();         session.close();     }     @Test     // Order <many-to-one     //      fetchjoin...【掌握】 4.1、HQL介绍 HQLHibernate Query Language:Hibernate查询语言)是描述对象操作的查询语言,是Hibernate所特有。...乐观锁(需要自己实现,但Hibernate帮我们实现了,我们只需配置一下就可以使用了): 乐观锁:丢失更新肯定不会发生。 在表中提供一个字段(版本字段),用于标识记录。如果版本不一致,不允许操作。

    2.5K40

    HQL语句大全

    1 Hibernate 中使用SQL HQL不是万能的,无法执行插入语句和非常复杂的查询,Hibernate 也支持SQL查询。...from Cat as cat     inner join fetch cat.mate     left join fetch cat.kittens一个fetch连接通常不需要被指定别名, 因为相关联的对象不应当被用在...注意fetch构造变量在使用了scroll() 或 iterate()函数 的查询中是不能使用的。最后注意,使用full join fetch 与 right join fetch是没有意义的。...聚集函数 HQL查询甚至可以返回作用于属性之上的聚集函数的计算结果: select avg(cat.weight), sum(cat.weight), max(cat.weight), count(cat...HQL示例 Hibernate查询可以非常的强大与复杂。实际上,Hibernate的一个主要卖点就是查询语句的威力。这里有一些例子,它们与我在最近的 一个项目中使用的查询非常相似。

    2.6K50

    SSH框架之旅-hibernate(4)

    HQL 查询 使用 Query 对象调用相关的方法来做查询,需要写相关的hql语句,这是 hibernate 提供的查询语言,hql 语句中写的是实体类和属性,而 sql 语句中写的是数据表和字段。...* from student inner join banji on student.sid=banji.bid; 外连接 左外连接 select * from student left outer...join banji on student.sid=banji.bid; 右外连接 select * from student right outer join banji on student.sid...=banji.bid; 5.2 HQL 连接查询 5.2.1 内连接查询 内连接有一般的内连接查询,还有迫切内连接查询,迫切连接查询比一般的内连接查询多了一个 fetch 关键字两种方式返回的结果集不同...在 set 标签上使用fetch属性和 lazy 属性。fetch 的默认就是 select 值,如果 fetch 属性的值为 join 那么 lazy 里面的值设置就失效了。

    1.7K30
    领券