실전! Querydsl

Ch06. 스프링 데이터 JPA가 제공하는 Querydsl 기능 - Querydsl Web 지원

webmaster 2022. 1. 2. 12:36
728x90

공식 URL: https://docs.spring.io/spring-data/jpa/docs/2.2.3.RELEASE/reference/html/#core.web.type-safe

 

Spring Data JPA - Reference Documentation

Example 108. Using @Transactional at query methods @Transactional(readOnly = true) public interface UserRepository extends JpaRepository { List findByLastname(String lastname); @Modifying @Transactional @Query("delete from User u where u.active = false") v

docs.spring.io

@Controller
class UserController {

  @Autowired UserRepository repository;

  @RequestMapping(value = "/", method = RequestMethod.GET)
  String index(Model model, @QuerydslPredicate(root = User.class) Predicate predicate,    
          Pageable pageable, @RequestParam MultiValueMap<String, String> parameters) {

    model.addAttribute("users", repository.findAll(predicate, pageable));

    return "index";
  }
}​

3가지 경우에서의 조건문에 사용할수 밖에 없다
커스텀 하여 사용하기 위해서는 해당 인터페이스를 상속받아 구현하여야 하는데 너무 복잡하다

  • Controller에서 QuerydslPredicate를 불러서 사용할 수 있다
  • 한계점
    • 단순한 조건만 가능
    • 조건을 커스텀하는 기능이 복잡하고 명시적이지 않음
    • 컨트롤러가 Querydsl에 의존
  • 복잡한 실무환경에서 사용하기에는 한계가 명확
728x90