다른 인터페이스를 사용하여 해당 인터페이스를 확장하여
여러 인터페이스에서 어노테이션이 있는 메소드를 결합할 수 있습니다.
확장하는 인터페이스에 대해 바인드를 수행할 때, 워크벤치는
확장된 인터페이스의 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 패키지에 바인드하려고 합니다. 다음 단계를 수행하여
이를 수행할 수 있습니다.
- SalesTeam 및 MarketingTeam을 확장하는
인터페이스를 작성하십시오. 이 예제에서 인터페이스의 이름은 CombinedTeam이며
모양은 다음과 같습니다.
@PureQueryInterface
public interface CombinedTeam extends SalesTeam, MarketingTeam {
}
- @PureQueryInterface 어노테이션을
CombinedTeam 인터페이스에 추가하십시오.
- 인터페이스를 저장하여 CombinedTeam 인터페이스에 대한
구현을 생성하십시오. CombinedTeam에 대한
구현에는 SalesTeam 및 MarketingTeam 인터페이스에
선언된 메소드가 포함됩니다. 이 인터페이스는 동일한 어노테이션이 있는 메소드를
포함할 수 없습니다.
워크벤치는
SalesTeam 및 MarketingTeam 인터페이스에 대해
구현을 생성하지 않습니다. 해당 인터페이스에 대한 구현 클래스가 프로젝트에 존재하는 경우
워크벤치는 이 클래스를 삭제하지 않습니다. SalesTeam 또는 MarketingTeam 인터페이스를
변경하는 경우, 워크벤치는 CombinedTeam 인터페이스에 대한 구현 클래스를 다시 만듭니다.
6가지의 가능한 시나리오
이 시나리오는
인터페이스를 확장하거나 인터페이스에서 확장을 제거하거나
확장하는 인터페이스를 삭제할 때 워크벤치의 동작을 보여줍니다.
각 시나리오는 생성된 구현을 사용자 코드로
처리 체크 박스를 선택하거나 선택하지 않은 경우에
발생하는 사항을 보여줍니다. 기본으로,
이 체크 박스는 선택됩니다. 이는 워크벤치가 구현 클래스를 삭제하지 않음을
의미합니다.
Java™ 프로젝트를 마우스 오른쪽 단추로
누르고 특성을 선택하여 이 체크 박스를 가져올 수 있습니다.
특성 창에서, pureQuery를
확장하고 특성을 선택하십시오.
시나리오에는
다음 인터페이스를 사용합니다.
- 어노테이션이 있는 메소드를 선언하지 않는 인터페이스 A.
- 어노테이션이 있는 메소드를 선언하는 인터페이스 B, Y, Z.
- 시나리오 1: 어노테이션이 있는 메소드를
선언하지 않는 인터페이스를 사용하여 인터페이스 확장
- 사용자가 수행하는 사항
- 인터페이스 Y 및 Z를 작성하십시오. 이 인터페이스는
어노테이션이 있는 메소드를 선언합니다.
- 인터페이스 Y 및 Z를 확장하도록 인터페이스 A를 작성하십시오.
- 구현 클래스를 보유할 것을 지정한 경우
워크벤치가 수행하는 사항
- 인터페이스 Y 및 Z에 대한 구현 클래스(있는 경우)를
보유합니다. 이 인터페이스 중 하나를 수정하면 워크벤치는
해당되는 구현 클래스를 보유합니다.
- 인터페이스 A의 구현 클래스를 생성합니다. 이
클래스는 인터페이스 Y 및 Z에서 선언되는 어노테이션이 있는 메소드를 정의합니다.
- 구현 클래스를 보유할 것을 지정하지 않은 경우
워크벤치가 수행하는 사항
- 인터페이스 Y 및 Z에 대한 구현 클래스(있는 경우)를
삭제합니다. 이 클래스에 대해 작성하였을 수 있는 편집사항은
손실됩니다.
- 인터페이스 A의 구현 클래스를 생성합니다. 이
클래스는 인터페이스 Y 및 Z에서 선언되는 어노테이션이 있는 메소드를
정의합니다.
- 시나리오 2: 어노테이션이 있는 메소드를
선언하는 인터페이스를 사용하여 인터페이스 확장
- 사용자가 수행하는 사항
- 인터페이스 Y 및 Z를 작성하십시오. 이 인터페이스는
어노테이션이 있는 메소드를 선언합니다.
- 어노테이션이 있는 메소드를 선언하고 인터페이스 Y 및 Z를 확장하도록
인터페이스 B를 작성하십시오.
- 구현 클래스를 보유할 것을 지정한 경우
워크벤치가 수행하는 사항
- 인터페이스 Y 및 Z에 대한 구현 클래스(있는 경우)를
보유합니다. 이 인터페이스 중 하나를 수정하면 워크벤치는
해당되는 구현 클래스를 삭제합니다.
- 인터페이스 B의 구현 클래스를 생성합니다. 이
클래스는 인터페이스 B, Y 및 Z에서 선언되는 어노테이션이 있는 메소드를 정의합니다.
- 구현 클래스를 보유할 것을 지정하지 않은 경우
워크벤치가 수행하는 사항
- 인터페이스 Y 및 Z에 대한 구현 클래스(있는 경우)를
삭제합니다. 이 클래스에 대해 작성하였을 수 있는 편집사항은
손실됩니다.
- 인터페이스 B의 구현 클래스를 생성합니다. 이
클래스는 인터페이스 Y 및 Z에서 선언되는 어노테이션이 있는 메소드를
정의합니다.
- 시나리오 3: 어노테이션이 있는 메소드를
선언하지 않는 인터페이스에서 인터페이스 확장 취소
- 사용자가 수행하는 사항
- 더 이상 인터페이스 Y 및 Z를 확장하지 않거나 @PureQueryInterface
어노테이션을 포함하지 않도록 인터페이스 A를 편집하십시오.
- 구현 클래스를 보유할 것을 지정한 경우
워크벤치가 수행하는 사항
- 인터페이스 A에 대한 구현 클래스를 보유합니다.
- 구현 클래스를 보유할 것을 지정하지 않은 경우
워크벤치가 수행하는 사항
- 인터페이스 A에 대한 구현 클래스를 삭제합니다.
이 인터페이스는 어떤 어노테이션이 있는 메소드도 선언하지 않기
때문입니다. 이 클래스에 대해 작성하였을 수 있는 편집사항은
손실됩니다.
두 클래스 모두에서,
인터페이스 Y 및 Z에 대해 워크벤치가 구현 클래스를 생성하도록 하려면
다음 단계 중 하나를 수행해야 합니다.
- 프로젝트를 선택하고
자동 빌드 옵션이 선택되어 있는지
확인하십시오. 인터페이스를 편집하고 저장하십시오.
편집은 공백 문자 추가와 같은 사소한 변경일 수 있습니다.
- 프로젝트 > 정리를 선택하여
프로젝트를 빌드하십시오.
- 시나리오 4: 어노테이션이 있는 메소드를
선언하는 인터페이스에서 인터페이스 확장 취소
- 사용자가 수행하는 사항
- 더 이상 인터페이스 Y 및 Z를 확장하지 않거나 @PureQueryInterface
어노테이션을 포함하지 않도록 인터페이스 B를 편집하십시오.
- 구현 클래스를 보유하도록 지정했는지 여부에
관계없이, 워크벤치가 수행하는 사항
- 인터페이스 B에 대한 구현 클래스를 다시 만듭니다. 구현
클래스에 대해 작성하였을 수 있는 편집사항은
손실됩니다. 두 클래스 모두에서,
인터페이스 Y 및 Z에 대해 워크벤치가 구현 클래스를 생성하도록 하려면
다음 단계 중 하나를 수행해야 합니다.
- 프로젝트를 선택하고
자동 빌드 옵션이 선택되어 있는지
확인하십시오. 인터페이스를 편집하고 저장하십시오.
편집은 공백 문자 추가와 같은 사소한 변경일 수 있습니다.
- 프로젝트 > 정리를 선택하여
프로젝트를 빌드하십시오.
- 시나리오 5: 어노테이션이 있는 메소드를 선언하지 않으며
어노테이션이 있는 메소드를 선언하는 인터페이스를 확장하는 인터페이스 삭제
- 사용자가 수행하는 사항
- 어노테이션이 있는 메소드를 선언하지 않으며 인터페이스 Y 및 Z를 확장하는
인터페이스 A를 삭제하십시오.
- 구현 클래스를 보유할 것을 지정한 경우
워크벤치가 수행하는 사항
- 인터페이스 A에 대한 구현 클래스를 보유합니다.
그러나 프로젝트는 이제 컴파일 오류를 포함합니다.
- 구현 클래스를 보유할 것을 지정하지 않은 경우
워크벤치가 수행하는 사항
- 인터페이스 A에 대한 구현 클래스를 삭제합니다.
두 클래스 모두에서,
인터페이스 Y 및 Z에 대해 워크벤치가 구현 클래스를 생성하도록 하려면
다음 단계 중 하나를 수행해야 합니다.
- 프로젝트를 선택하고
자동 빌드 옵션이 선택되어 있는지
확인하십시오. 인터페이스를 편집하고 저장하십시오.
편집은 공백 문자 추가와 같은 사소한 변경일 수 있습니다.
- 프로젝트 > 정리를 선택하여
프로젝트를 빌드하십시오.
- 시나리오 6: 어노테이션이 있는 메소드를 선언하며
어노테이션이 있는 메소드를 선언하는 인터페이스를 확장하는 구현 클래스 삭제
- 사용자가 수행하는 사항
- 어노테이션이 있는 메소드를 선언하며 인터페이스 Y 및 Z를 확장하는
인터페이스 B를 삭제하십시오.
- 구현 클래스를 보유할 것을 지정한 경우
워크벤치가 수행하는 사항
- 인터페이스 B에 대한 구현 클래스를 보유합니다.
그러나 프로젝트는 이제 컴파일 오류를 포함합니다.
- 구현 클래스를 보유할 것을 지정하지 않은 경우
워크벤치가 수행하는 사항
- 인터페이스 B에 대한 구현 클래스를 삭제합니다.
두 클래스 모두에서,
인터페이스 Y 및 Z에 대해 워크벤치가 구현 클래스를 생성하도록 하려면
다음 단계 중 하나를 수행해야 합니다.
- 프로젝트를 선택하고
자동 빌드 옵션이 선택되어 있는지
확인하십시오. 인터페이스를 편집하고 저장하십시오.
편집은 공백 문자 추가와 같은 사소한 변경일 수 있습니다.
- 프로젝트 > 정리를 선택하여
프로젝트를 빌드하십시오.