gpt4 book ai didi

hibernate - jpql "join fetch"vs EntityGraph

转载 作者:行者123 更新时间:2023-12-04 13:58:38 25 4
gpt4 key购买 nike

我想使用 jpql 或 jpa 实体图加载相关实体。

似乎两者都做同样的事情。

我为什么要使用 实体图 而不是普通 jpql ?有什么好处吗?

使用jpql有什么区别:

select distinct u from User u join fetch u.hobbies a join fetch a.tasks

或实体图:
@NamedEntityGraph(name = "User.eagerfetch", attributeNodes = { 
@NamedAttributeNode("hobbies"),
@NamedAttributeNode("tasks")})

最佳答案

不同之处在于代码的专业成熟度。
NamedEntityGraphs 的清晰度和可读性、可维护性和代码质量明显更好。
EntityGraph 在编译时进行评估,并且由于与实体定义紧密耦合,因此不易出错。对 Entity 类的任何更改都会破坏 Graph 定义,因此与查询字符串不同,代码甚至不会因为这些错误而编译。手写查询是黑客解决方案。更不用说所有实体定义都在一个地方;在@Entity 类中并非无处不在。

关于hibernate - jpql "join fetch"vs EntityGraph,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56386584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com