是否有一种启发式/最佳实践/规则集来决定使用Criteria API还是NamedQuery?
我的想法如下:
命名查询通常更易读。Criteria查询更加灵活。
两者都是预编译的。我倾向于尽可能地使用命名查询,然后再改为Criteria查询。
但也许通过使用Criteria API来“弯曲”查询的渴望是指向次优的设计(即关注点分离)的暗示?
谢谢
是否有一种启发式/最佳实践/规则集来决定使用Criteria API还是NamedQuery?
我的想法如下:
命名查询通常更易读。Criteria查询更加灵活。
两者都是预编译的。我倾向于尽可能地使用命名查询,然后再改为Criteria查询。
但也许通过使用Criteria API来“弯曲”查询的渴望是指向次优的设计(即关注点分离)的暗示?
谢谢
命名查询更加优化(只需解析/预编译一次)。Criteria查询是动态的(它们没有预编译),尽管一些JPA提供商(如EclipseLink)维护着criteria准备缓存。
我只会在需要动态查询时使用criteria。
当需要基于变量和多个搜索条件动态生成查询时,标准查询是一个不错的选择。
对于静态查询,JPQL更易读,我更喜欢使用它们而非标准查询。您可能会失去一些安全性,但单元测试应该让您更加自信。