QueryDSL
EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistenceUnitName");
EntityManager em = emf.createEntityManager();
JPAQueryFactory queryFactory = new JPAQueryFactory(JPQLTemplates.DEFAULT, em) ;
QPerson person = Person.person;
List<Person> persons = queryFactory.selectFrom(person)
.where(
person.firstName.eq("John"),
person.lastName.eq("Doe"))
.orderBy(
person.lastName.asc(),
person.firstName.desc())
.fetch();
QueryDSL — это мощный и чрезвычайно гибкий инструмент для работы с БД и просто подарок для Java-разработчиков, которые не очень хорошо разбираются в SQL (или совсем не разбираются), поскольку позволяет работать с БД при помощи привычного объектного представления сущностных зависимостей.
Querydsl был создан как замена громоздкого и многословного Criteria Query API.
Достоинства:
👉 типобезопасные запросы
👉 статическая проверка запросов