Query DSL is typical in fact one of the main reasons for using QueryDSL and one of the problems that it is trying to solve. You create a metamodel, and this allows you to use it effectively with JPA, JDO, SQL ..
The reason you might want to use it instead of JPA might be a simpler expression construct or it works well with Spring Data. Or maybe you want to access MongoDB ..
, imho. , (JPA) (, CDI, JSR,..)
:
Querydsl. , . / .