2016-03-01 1 views
1

Я devloping Spring MVC + spring-data-jpa + Hibernate пример. Я использую простой шаблон Repository (по extending JpaRepository<T, ID extends Serializable>), чтобы выполнить запрос на DataSource(DS) и получить результат. Даже я могу написать любой пользовательский запрос в соответствии с моими бизнес-потребностями.В чем разница между шаблоном репозитория Spring-data-jpa Vs Querydsl?

Выполняя исследования, я нахожу API "querydsl-sql". Этот API использует плагины и нужно использовать QueryDslPredicateExecutor<T> как (по

extending JpaRepository<T, ID extends Serializable>, 
QueryDslPredicateExecutor<T>) 

. Но на высоком уровне это выглядит для меня, что этот API также делает то же самое, что Repository API делает.

Может кто-то пожалуйста предложить/руководство, в чем разница между двумя методами? Один из вариантов использования простой Repository и еще использований QueryDslPredicateExecutor

List<Customer> findByCustomerNumberAndCustomerId(Integer customerNumber, Integer customerId); 

метод Querydsl

@Query("select c from Customer c where c.customerNumber=:customerNumber and c.customerId=:customerId") 
    List<Customer> findByCustomerNumberAndCustomerId(@Param("customerNumber") 
Integer customerNumber, @Param("customerId") Integer customerId); 

ответ

1

Ваш пример метода Querydsl на самом деле является методом репозитория данных весны.

Разница заключается в том, что QueryDsl предлагает простой и красивый способ создания динамических запросов к базе данных. То есть он позволяет создавать SQL «на лету». Это полезно, когда, например, вам нужно получить набор объектов со сложным фильтром. Например. по имени, дате, стоимости и т. д. И в результате SQL должен содержать только условия, указанные в фильтре.

Данные весны позволяют достичь этого без Querydsl, используя встроенный API спецификаций, но способ Querydsl проще и даже более дружественным к IDE.

Подробнее об этом: https://spring.io/blog/2011/04/26/advanced-spring-data-jpa-specifications-and-querydsl/

Смежные вопросы