DAO(Data Access Object) 인터페이스 및 어노테이션이 있는 메소드 개요

어노테이션이 있는 메소드를 작성할 때 자신의 인터페이스에 정의하는 메소드의 어노테이션에 SQL 쿼리, 업데이트 명령문 또는 CALL문을 코드화할 수 있습니다. DAO(Data Access Object) 인터페이스와 함께 어노테이션이 있는 메소드를 정의할 수 있습니다.

어노테이션이 있는 메소드를 사용하면 다음과 같은 이점이 있습니다.

사용자 정의 인터페이스의 메소드에 대한 어노테이션에 SQL 정의

데이터 액세스 오브젝트를 작성하는 인터페이스를 써서 DAO(Data Access Object) 패턴을 따르는 사용자 정의 인터페이스를 작성할 수 있습니다. 인터페이스 쓰기가 완료되면 pureQuery 생성 프로그램 유틸리티를 실행하여 인터페이스를 구현하는 클래스의 정의를 생성합니다. 애플리케이션에 대한 코드를 쓸 때 이 구현 클래스의 인스턴스를 작성한 다음 해당 인스턴스에서 구현되는 메소드를 호출할 수 있습니다. 메소드에 매개변수를 제공하고 쿼리 결과를 수신하기 위해 Java 오브젝트, Bean 및 콜렉션을 사용할 수 있습니다.

예를 들어, 다음 메소드는 @Select 어노테이션을 사용하며 CustomerQuery라는 인터페이스에 표시될 수 있습니다. 이 인터페이스에서는 CUSTOMER라고 이름 지정된 테이블의 레코드를 쿼리 또는 업데이트하기 위한 메소드를 정의합니다.

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

인터페이스를 컴파일하고 pureQuery 생성 프로그램 유틸리티를 사용하여 인터페이스를 구현하는 CustomerQueryImpl으로 이름 지정된 클래스를 작성하면, 애플리케이션은 메소드를 호출하여 리턴된 목록에서 쿼리 결과를 검색할 수 있습니다.

Connection con = DriverManager.getConnection(...);
CustomerQuery cQuery = DataFactory.getData(CustomerQuery.class, con);

int region = 123;

List<Customer> customersInRegion = cQuery.getCustomersInRegion(region);

위 코드에서 수행하는 단계는 다음과 같습니다.

  1. 데이터베이스에 대한 연결을 작성합니다.
  2. CustomerQuery의 인스턴스를 작성합니다.
  3. region 변수를 작성하고 초기화합니다.
  4. cQuery.getCustomersInRegion() 메소드를 호출하고 Customer 오브젝트의 새 List에 결과를 전달합니다.

코드는 구현 클래스가 아니라 CustomerQuery 인터페이스를 직접 참조함에 유의하십시오.생성된 구현 클래스와 관계없이 애플리케이션을 컴파일할 수 있습니다.

XML 파일에 SQL 정의

XML 파일을 사용하여 인터페이스에 정의된 메소드의 어노테이션에 있는 SQL문을 겹쳐쓸 수 있습니다. XML 파일에 SQL문을 제공하고 인터페이스에 대한 구현 클래스를 생성할 때 pureQuery 생성 프로그램 유틸리티에 해당 파일을 제공합니다. 이러한 방식으로 해당 애플리케이션이 다른 데이터베이스와 연관되어 있을 때 둘 이상의 애플리케이션에서 인터페이스를 다시 사용할 수 있습니다.

예를 들어, DB2 데이터베이스에 대해 작업하는 하나의 애플리케이션과 Oracle 데이터베이스에 대해 작업하는 유사한 애플리케이션이 있을 수 있습니다. Customer라는 인터페이스에 DB2 데이터베이스와 호환 가능한 SQL문이 포함되어 있을 수 있습니다. 두 번째 애플리케이션에 대해 인터페이스를 다시 사용하려면, Customer 인터페이스의 구현 클래스를 생성할 때 Oracle 데이터베이스와 호환 가능한 SQL문을 포함하는 XML 파일을 pureQuery 생성 프로그램 유틸리티에 제공합니다.


피드백