Criteria API的更多可用替代方案

Ale*_*nov 8 java jpa criteria-api

Criteria比使用JPQL或原始SQL有一些优势,如本答案中所述:类型安全; 重构友好; 减少对字符串的依赖(但仍有一些).还有一个非常大的缺点:它们不那么可读,而且简直太丑了.是否有(非JPA)Java API用于访问类型安全且可读的关系数据库?

sin*_*pop 8

蒂莫Westkämper已经做了很好的工作QueryDSL.该库提供了一个DSL,用于查询不同的持久性提供程序(JPA,MongoDB,Lucene ...).

但我经常使用手工制作的解决方案来简化大多数常见的查询(列出限制其某些字段的实体),从而阻止我总是写相同的行.对于大多数复杂的查询,我切换到不可读和详细的Criteria API.

  • QueryDSL 从几年前就被暂停,并且无法与现代版本的 hibernate 一起使用。目前它正在转移所有权,但我不知道它什么时候会再次可用:https://github.com/querydsl/querydsl/issues/2459 (2认同)