Ale*_*nov 8 java jpa criteria-api
Criteria比使用JPQL或原始SQL有一些优势,如本答案中所述:类型安全; 重构友好; 减少对字符串的依赖(但仍有一些).还有一个非常大的缺点:它们不那么可读,而且简直太丑了.是否有(非JPA)Java API用于访问类型安全且可读的关系数据库?
蒂莫Westkämper已经做了很好的工作QueryDSL.该库提供了一个DSL,用于查询不同的持久性提供程序(JPA,MongoDB,Lucene ...).
但我经常使用手工制作的解决方案来简化大多数常见的查询(列出限制其某些字段的实体),从而阻止我总是写相同的行.对于大多数复杂的查询,我切换到不可读和详细的Criteria API.