인터페이스에 대한 단일 구현 및 DB2 패키지를 작성하도록 워크벤치에서 인터페이스 확장

다른 인터페이스를 사용하여 해당 인터페이스를 확장하여 여러 인터페이스에서 어노테이션이 있는 메소드를 결합할 수 있습니다. 확장하는 인터페이스에 대해 바인드를 수행할 때, 워크벤치는 확장된 인터페이스의 SQL문을 포함하는 DB2® 패키지를 작성합니다.

extends 키워드를 사용하여 인터페이스를 확장합니다. 또한 @PureQueryInterface 어노테이션을 확장 인터페이스에 추가합니다.

확장 인터페이스는 또한 어노테이션이 있는 메소드를 선언할 수 있습니다. 이 경우, 확장하는 인터페이스에 대해 사용자가 생성하는 구현 클래스에는 해당 인터페이스에서 선언되는 어노테이션이 있는 메소드의 정의 및 확장 인터페이스에서 선언되는 어노테이션이 있는 메소드의 정의가 포함됩니다.

예제

다음과 같은 인터페이스가 있다고 가정하십시오.
public interface SalesTeam { 
     @Select(sql="SELECT * FROM SALES") 
     List<SalesBean> getSalesEmployees(); 
}
   
public interface MarketingTeam { 
     @Select(sql="SELECT * FROM MARKETING") 
     List<MktBean> getMarketingEmployees(); 
}
이러한 인터페이스의 SQL문을 고유한 DB2 패키지에 바인드하려고 합니다. 다음 단계를 수행하여 이를 수행할 수 있습니다.
  1. SalesTeamMarketingTeam을 확장하는 인터페이스를 작성하십시오. 이 예제에서 인터페이스의 이름은 CombinedTeam이며 모양은 다음과 같습니다.
    @PureQueryInterface 
    public interface CombinedTeam extends SalesTeam, MarketingTeam { 
    }
  2. @PureQueryInterface 어노테이션을 CombinedTeam 인터페이스에 추가하십시오.
  3. 인터페이스를 저장하여 CombinedTeam 인터페이스에 대한 구현을 생성하십시오. CombinedTeam에 대한 구현에는 SalesTeamMarketingTeam 인터페이스에 선언된 메소드가 포함됩니다. 이 인터페이스는 동일한 어노테이션이 있는 메소드를 포함할 수 없습니다.

    워크벤치는 SalesTeamMarketingTeam 인터페이스에 대해 구현을 생성하지 않습니다. 해당 인터페이스에 대한 구현 클래스가 프로젝트에 존재하는 경우 워크벤치는 이 클래스를 삭제하지 않습니다. SalesTeam 또는 MarketingTeam 인터페이스를 변경하는 경우, 워크벤치는 CombinedTeam 인터페이스에 대한 구현 클래스를 다시 만듭니다.

6가지의 가능한 시나리오

이 시나리오는 인터페이스를 확장하거나 인터페이스에서 확장을 제거하거나 확장하는 인터페이스를 삭제할 때 워크벤치의 동작을 보여줍니다.

각 시나리오는 생성된 구현을 사용자 코드로 처리 체크 박스를 선택하거나 선택하지 않은 경우에 발생하는 사항을 보여줍니다. 기본으로, 이 체크 박스는 선택됩니다. 이는 워크벤치가 구현 클래스를 삭제하지 않음을 의미합니다.

Java™ 프로젝트를 마우스 오른쪽 단추로 누르고 특성을 선택하여 이 체크 박스를 가져올 수 있습니다. 특성 창에서, pureQuery를 확장하고 특성을 선택하십시오.

시나리오에는 다음 인터페이스를 사용합니다.
  • 어노테이션이 있는 메소드를 선언하지 않는 인터페이스 A.
  • 어노테이션이 있는 메소드를 선언하는 인터페이스 B, Y, Z.
시나리오 1: 어노테이션이 있는 메소드를 선언하지 않는 인터페이스를 사용하여 인터페이스 확장
사용자가 수행하는 사항
  1. 인터페이스 Y 및 Z를 작성하십시오. 이 인터페이스는 어노테이션이 있는 메소드를 선언합니다.
  2. 인터페이스 Y 및 Z를 확장하도록 인터페이스 A를 작성하십시오.
구현 클래스를 보유할 것을 지정한 경우 워크벤치가 수행하는 사항
  1. 인터페이스 Y 및 Z에 대한 구현 클래스(있는 경우)를 보유합니다. 이 인터페이스 중 하나를 수정하면 워크벤치는 해당되는 구현 클래스를 보유합니다.
  2. 인터페이스 A의 구현 클래스를 생성합니다. 이 클래스는 인터페이스 Y 및 Z에서 선언되는 어노테이션이 있는 메소드를 정의합니다.
구현 클래스를 보유할 것을 지정하지 않은 경우 워크벤치가 수행하는 사항
  1. 인터페이스 Y 및 Z에 대한 구현 클래스(있는 경우)를 삭제합니다. 이 클래스에 대해 작성하였을 수 있는 편집사항은 손실됩니다.
  2. 인터페이스 A의 구현 클래스를 생성합니다. 이 클래스는 인터페이스 Y 및 Z에서 선언되는 어노테이션이 있는 메소드를 정의합니다.

 

시나리오 2: 어노테이션이 있는 메소드를 선언하는 인터페이스를 사용하여 인터페이스 확장
사용자가 수행하는 사항
  1. 인터페이스 Y 및 Z를 작성하십시오. 이 인터페이스는 어노테이션이 있는 메소드를 선언합니다.
  2. 어노테이션이 있는 메소드를 선언하고 인터페이스 Y 및 Z를 확장하도록 인터페이스 B를 작성하십시오.
구현 클래스를 보유할 것을 지정한 경우 워크벤치가 수행하는 사항
  1. 인터페이스 Y 및 Z에 대한 구현 클래스(있는 경우)를 보유합니다. 이 인터페이스 중 하나를 수정하면 워크벤치는 해당되는 구현 클래스를 삭제합니다.
  2. 인터페이스 B의 구현 클래스를 생성합니다. 이 클래스는 인터페이스 B, Y 및 Z에서 선언되는 어노테이션이 있는 메소드를 정의합니다.
구현 클래스를 보유할 것을 지정하지 않은 경우 워크벤치가 수행하는 사항
  1. 인터페이스 Y 및 Z에 대한 구현 클래스(있는 경우)를 삭제합니다. 이 클래스에 대해 작성하였을 수 있는 편집사항은 손실됩니다.
  2. 인터페이스 B의 구현 클래스를 생성합니다. 이 클래스는 인터페이스 Y 및 Z에서 선언되는 어노테이션이 있는 메소드를 정의합니다.

 

시나리오 3: 어노테이션이 있는 메소드를 선언하지 않는 인터페이스에서 인터페이스 확장 취소
사용자가 수행하는 사항
더 이상 인터페이스 Y 및 Z를 확장하지 않거나 @PureQueryInterface 어노테이션을 포함하지 않도록 인터페이스 A를 편집하십시오.
구현 클래스를 보유할 것을 지정한 경우 워크벤치가 수행하는 사항
인터페이스 A에 대한 구현 클래스를 보유합니다.
구현 클래스를 보유할 것을 지정하지 않은 경우 워크벤치가 수행하는 사항
인터페이스 A에 대한 구현 클래스를 삭제합니다. 이 인터페이스는 어떤 어노테이션이 있는 메소드도 선언하지 않기 때문입니다. 이 클래스에 대해 작성하였을 수 있는 편집사항은 손실됩니다.
두 클래스 모두에서, 인터페이스 Y 및 Z에 대해 워크벤치가 구현 클래스를 생성하도록 하려면 다음 단계 중 하나를 수행해야 합니다.
  1. 프로젝트를 선택하고 자동 빌드 옵션이 선택되어 있는지 확인하십시오. 인터페이스를 편집하고 저장하십시오. 편집은 공백 문자 추가와 같은 사소한 변경일 수 있습니다.
  2. 프로젝트 > 정리를 선택하여 프로젝트를 빌드하십시오.

 

시나리오 4: 어노테이션이 있는 메소드를 선언하는 인터페이스에서 인터페이스 확장 취소
사용자가 수행하는 사항
더 이상 인터페이스 Y 및 Z를 확장하지 않거나 @PureQueryInterface 어노테이션을 포함하지 않도록 인터페이스 B를 편집하십시오.
구현 클래스를 보유하도록 지정했는지 여부에 관계없이, 워크벤치가 수행하는 사항
인터페이스 B에 대한 구현 클래스를 다시 만듭니다. 구현 클래스에 대해 작성하였을 수 있는 편집사항은 손실됩니다. 두 클래스 모두에서, 인터페이스 Y 및 Z에 대해 워크벤치가 구현 클래스를 생성하도록 하려면 다음 단계 중 하나를 수행해야 합니다.
  1. 프로젝트를 선택하고 자동 빌드 옵션이 선택되어 있는지 확인하십시오. 인터페이스를 편집하고 저장하십시오. 편집은 공백 문자 추가와 같은 사소한 변경일 수 있습니다.
  2. 프로젝트 > 정리를 선택하여 프로젝트를 빌드하십시오.

 

시나리오 5: 어노테이션이 있는 메소드를 선언하지 않으며 어노테이션이 있는 메소드를 선언하는 인터페이스를 확장하는 인터페이스 삭제
사용자가 수행하는 사항
어노테이션이 있는 메소드를 선언하지 않으며 인터페이스 Y 및 Z를 확장하는 인터페이스 A를 삭제하십시오.
구현 클래스를 보유할 것을 지정한 경우 워크벤치가 수행하는 사항
인터페이스 A에 대한 구현 클래스를 보유합니다. 그러나 프로젝트는 이제 컴파일 오류를 포함합니다.
구현 클래스를 보유할 것을 지정하지 않은 경우 워크벤치가 수행하는 사항
인터페이스 A에 대한 구현 클래스를 삭제합니다.
두 클래스 모두에서, 인터페이스 Y 및 Z에 대해 워크벤치가 구현 클래스를 생성하도록 하려면 다음 단계 중 하나를 수행해야 합니다.
  1. 프로젝트를 선택하고 자동 빌드 옵션이 선택되어 있는지 확인하십시오. 인터페이스를 편집하고 저장하십시오. 편집은 공백 문자 추가와 같은 사소한 변경일 수 있습니다.
  2. 프로젝트 > 정리를 선택하여 프로젝트를 빌드하십시오.

 

시나리오 6: 어노테이션이 있는 메소드를 선언하며 어노테이션이 있는 메소드를 선언하는 인터페이스를 확장하는 구현 클래스 삭제
사용자가 수행하는 사항
어노테이션이 있는 메소드를 선언하며 인터페이스 Y 및 Z를 확장하는 인터페이스 B를 삭제하십시오.
구현 클래스를 보유할 것을 지정한 경우 워크벤치가 수행하는 사항
인터페이스 B에 대한 구현 클래스를 보유합니다. 그러나 프로젝트는 이제 컴파일 오류를 포함합니다.
구현 클래스를 보유할 것을 지정하지 않은 경우 워크벤치가 수행하는 사항
인터페이스 B에 대한 구현 클래스를 삭제합니다.
두 클래스 모두에서, 인터페이스 Y 및 Z에 대해 워크벤치가 구현 클래스를 생성하도록 하려면 다음 단계 중 하나를 수행해야 합니다.
  1. 프로젝트를 선택하고 자동 빌드 옵션이 선택되어 있는지 확인하십시오. 인터페이스를 편집하고 저장하십시오. 편집은 공백 문자 추가와 같은 사소한 변경일 수 있습니다.
  2. 프로젝트 > 정리를 선택하여 프로젝트를 빌드하십시오.

피드백