pureQuery Generator 유틸리티에 대해 XML 구성 파일 사용

어노테이션이 있는 메소드를 정의하는 인터페이스에 대한 구현 클래스를 생성할 때, XML 파일을 사용하여 해당 메소드를 사용하는 SQL문을 지정하거나 겹쳐쓸 수 있습니다. 또한 동일한 XML 파일을 사용하여 데이터베이스 오브젝트(예: 테이블 또는 보기)의 컬럼이 Bean의 등록 정보에 맵핑되는 방법을 대체할 수 있습니다.

어노테이션이 있는 메소드에 대한 구현을 인터페이스에 작성할 때 pureQuery Generator는 메소드에 빈 어노테이션이 정의되어 있는 경우에 사용할 SQL문 또는 메소드의 어노테이션에 사용되는 SQL문의 겹쳐쓰기에 대해 XML 구성 파일을 점검합니다. pureQuery Generator는 또한 파일이 참조할 수 있는 모든 Bean에 대해서도 XML 구성 파일을 점검합니다.

XML 구성 파일을 지정하려면 pureQuery Generator를 호출할 때 xmlFile 옵션을 사용하십시오.

어노테이션이 있는 메소드를 정의하는 인터페이스에 SQL문을 지정하거나 겹쳐쓰기 위한 XML 구성 파일의 예제 사용

다음 예제에서는 XML 구성 파일을 사용하려고 할 수 있는 상황에 대해 설명합니다.

다음과 같은 상황에서 인터페이스의 SQL문을 겹쳐쓰려고 할 수 있습니다.
  • 두 개의 서로 다른 데이터베이스에 대해 실행되는 두 개의 서로 다른 응용프로그램에서 인터페이스를 사용하려고 합니다. 인터페이스에 SQL문을 포함시키는 대신에 각 응용프로그램에 대해 XML 구성 파일을 작성하고 각 XML 파일에 각 응용프로그램에 대한 SQL문을 작성하십시오.

    예를 들어, 다음과 같이 인터페이스에 어노테이션이 있는 메소드를 정의할 수 있습니다.

    @Select
    Iterator<Customer> getCustomersInRegion(int r);

    한 응용프로그램에 대한 XML 구성 파일에 이 메소드에 대해 사용하려는 SQL문을 정의합니다.

    <named-native-query name="myPackage.CustomerInterface#getCustomersInRegion(int)"> 
      <query>
        <![CDATA[SELECT CUSTID, NAME FROM Customer WHERE STOREREGION=?1]]>
      </query> 
    </named-native-query>

    다른 응용프로그램에 대한 XML 구성 파일에 동일한 작업을 수행합니다.

    <named-native-query name="myPackage.CustomerInterface#getCustomersInRegion(int)"> 
      <query>
        <![CDATA[SELECT ID, NAME FROM CUST WHERE REGION=?1]]>
      </query> 
    </named-native-query>
  • 인터페이스에 SQL문을 추가했으며 해당 명령문은 하나의 응용프로그램을 지원합니다. 이제 다른 데이터베이스에 대해 실행되는 두 번째 응용프로그램에서 인터페이스를 사용하려고 합니다. 두 번째 응용프로그램에 대한 구현 클래스를 생성할 때, XML 파일을 사용하여 인터페이스에 있는 SQL문을 겹쳐쓸 수 있습니다.

    예를 들어, 인터페이스에 첫 번째 응용프로그램에서 사용하는 어노테이션이 있는 메소드에 대한 다음 정의가 포함될 수 있습니다.

    @Select(sql="SELECT CUSTID, NAME FROM Customer WHERE STOREREGION=?1")
    Iterator<Customer> getCustomersInRegion(int r);

    다른 응용프로그램에 대한 XML 구성 파일에서 다음과 같이 SQL을 겹쳐쓸 수 있습니다.

    <named-native-query name="myPackage.CustomerInterface#getCustomersInRegion(int)"> 
      <query>
        <![CDATA[SELECT ID, NAME FROM CUST WHERE REGION=?1]]>
      </query> 
    </named-native-query>

피드백