JPA 命名查询与标准 API?
2022-09-01 12:52:19
是否有启发式/最佳实践/规则集用于在 Criteria API 和 NamedQuery 之间做出决定?
到目前为止,我的想法:
命名查询通常更具可读性。条件查询更灵活。
两者都是预编译的。我倾向于尽可能长时间地使用命名查询,然后更改为条件。
但是,通过使用标准API“灵活化”查询的冲动也许是对次优设计(即关注点分离)的暗示?
谢谢
是否有启发式/最佳实践/规则集用于在 Criteria API 和 NamedQuery 之间做出决定?
到目前为止,我的想法:
命名查询通常更具可读性。条件查询更灵活。
两者都是预编译的。我倾向于尽可能长时间地使用命名查询,然后更改为条件。
但是,通过使用标准API“灵活化”查询的冲动也许是对次优设计(即关注点分离)的暗示?
谢谢
命名查询更优化(它们被解析/准备一次)。条件查询是动态的(它们不是预编译的,尽管某些 JPA 提供程序(如 EclipseLink)维护条件准备缓存)。
我只会对动态查询使用条件。
当必须动态生成查询(例如,基于变量和多个搜索条件)时,条件查询是一个不错的选择。
对于静态查询,JPQL更具可读性,我更喜欢使用它们而不是条件查询。你可能会失去一些安全性,但单元测试应该会让你更有信心。