복붙노트

[SPRING] 스프링 부트 애플리케이션에서 쿼리를 외부화

SPRING

스프링 부트 애플리케이션에서 쿼리를 외부화

spring-boot 1.5.6 RELEASE를 사용하고 있습니다. 기본 작업을하고 싶습니다. 저장소의 @Query 주석에서 xml 파일로 쿼리를 이동하십시오.

약간의 독서 끝에 orm.xml 또는 jpa-named-queries.properties를 사용하여 사용자 정의 쿼리를 작성할 수 있다는 것을 알았습니다.

이 XML 파일이 어디에 있어야하는지에 대한 파일 구조를 이해하지 못합니다. 그리고 내 프로젝트에 META-INF 폴더가 없습니다.

예:

POJO 클래스 :

@Entity
public Class Customer {

private int id;
private String name;

// getters and setters
}

저장소:

public interface CustomerRepository extends PagingAndSortingRepository<Customer,Integer> {

// this query I need from an external xml file as it might be quite complex in terms of joins
@Query("Select cust from Customers cust")
public List<Customer> findAllCustomers();

}

편집 :이 stackoverflow 질문을 참조하십시오. META-INF 폴더가 없으므로 이러한 파일 (orm.xml 및 persistence.xml)을 저장 해야하는 위치를 알아야합니다.

미리 감사드립니다 !!

해결법

  1. ==============================

    1.resources 폴더 안에 META-INF를 작성하십시오. 이제 해당 META-INF 폴더 내에 jpa-named-queries.properties 파일을 작성하십시오.

    resources 폴더 안에 META-INF를 작성하십시오. 이제 해당 META-INF 폴더 내에 jpa-named-queries.properties 파일을 작성하십시오.

    이 속성 파일 안에 다음과 같이 쿼리를 작성하십시오.

    Customer.findAllCustomerByNamedQuery = 고객 c에서 c를 선택하십시오

    여기서 고객은 엔티티 클래스의 이름을 나타내고 findAllCustomerByNamedQuery는 조회 이름입니다.

    고객 저장소에 다음을 작성하여 특성 파일에 작성된 쿼리를 호출하십시오.

    List <고객> findAllCustomerByNamedQuery ();

  2. from https://stackoverflow.com/questions/46060590/externalize-query-in-spring-boot-application by cc-by-sa and MIT license