Я немного смущен этими тремя понятиями.
- Критерии API
- Запрос Dsl
- мета-модель Jpa 2.0
Из того, что я прочитал, одним из основных преимуществ использования метамодели QueryDsl или JPA является безопасность типов.
Но я могу добиться безопасности типов даже с помощью API Criteria. (Я использую JPA с eclipselink)
javax.persistence.EntityManager
имеет два варианта
public Query createQuery(String sqlString);
public <T> TypedQuery<T> createQuery(CriteriaQuery<T> criteriaQuery);
Я согласен с первой версией, в которой я передаю sql в виде строки, я не получаю безопасность типов Но со второй версией я получаю безопасность типов. Или я что-то здесь упускаю? Может кто-нибудь объяснить на примере, что использование критериев небезопасно.
В чем разница между QueryDsl и статической метамоделью JPA?