/* 설명. 4. jpql 및 native query 활용 */
    public List<CategoryDTO> findAllCategory() {
        // findAll()사용해도 되지만 **이번에 jpa가 제공하지 않는 메소드를 사용해보자**
        List<Category> categories = **categoryRepository.findAllCategories();**
        return categories.stream()
                .map(category -> modelMapper.map(category, CategoryDTO.class))
                .collect(Collectors.toList());
    }

@Query

Native Query

  1. DB에 최적화된 SQL을 그대로 쓰고 싶을 때

    (예: DB 특정 함수, 인덱스 힌트, JOIN 최적화, LIMIT, OFFSET 등 JPQL이 지원 안 하는 기능)

  2. 복잡한 SQL 쿼리를 JPQL로 표현하기 힘들 때

    (특히 서브쿼리, UNION, DB 전용 기능)

  3. 기존 SQL을 그대로 재활용하고 싶을 때

    (예: DBA가 만들어둔 SQL)

정리