pureQuery 리팩토링 예: 매개변수를 리턴하는 어노테이션 방식 메소드

이 예의 코드는 정적으로 실행되는 pureQuery 응옹프로그램에서 매개변수를 리턴하는 어노테이션 방식 메소드를 리팩토링하는 방법을 보여줍니다.

DepartmentDataTest 클래스는 DEPARTMENT 테이블에 액세스하는 방법을 보여줍니다. pureQuery에 의해 생성되는 이 클래스는 어노테이션 방식 메소드 스타일의 프로그래밍을 보여줍니다.

리팩토링된 newAnnotStatic 메소드를 사용하여 Java 스토어드 프로시저를 작성할 수 있습니다. 이 메소드의 myPdqProperties.put("pdq.executionMode", "STATIC"); 명령문은 메소드를 사용하여 작성한 스토어드 프로시저가 정적으로 실행되게 합니다.

package ANNOTATED;

// Imports
import java.util.Iterator;
import pureQuery.example.SampleUtil;
import com.ibm.pdq.runtime.Data;
import com.ibm.pdq.runtime.ResultIterator;
import com.ibm.pdq.runtime.factory.DataFactory;

import java.sql.*;

public class DepartmentDataTest {

  public static void newAnnotStatic(String[] s) throws SQLException,Exception {
    Connection con = DriverManager.getConnection("jdbc:default:connection");
    java.util.Properties myPdqProperties = new java.util.Properties();
    myPdqProperties.put("pdq.executionMode", "STATIC");
    DepartmentData d = DataFactory.getData(DepartmentData.class,
                   con,myPdqProperties);
 
    Iterator<Department> departments = d.getDepartments();

    if(departments.hasNext()){
      Department dept = departments.next();
      s[0] = dept.getDeptname();				  
     }    
}

  /**
   * @param args
   */
  public static void main(String[] args) {
    DepartmentData data = null;
    try {
      if (args.length < 1) {
        SampleUtil.println("All required arguments were not provided.");
        return;
       }

      data = SampleUtil.getData(
              DepartmentData.class,
              "jdbc:db2://iicriollo3.svl.ibm.com:50000/SAMPLE:retrieveMessagesFromServerOnGetMessage=true;",
              "db2admin", args[0]);
      ((Data) data).setAutoCommit(false);
      Iterator<Department> getDepartments = data.getDepartments();

      Department bean = null;
      if (getDepartments.hasNext()) {
        bean = getDepartments.next();
        ((ResultIterator<Department>) getDepartments).close();
      } else {
        SampleUtil.println("Result set is empty.");
        ((Data) data).rollback();
        return;
      }

      getDepartments = data.getDepartments();
      SampleUtil.println("Results for getDepartments()");
      SampleUtil.printAll(getDepartments);

      Department getDepartment = null;
      ((Data) data).commit();
    } catch (Exception exp) {
      SampleUtil.println(exp.getMessage());
      SampleUtil.println(exp.toString());
      if (data != null)
        ((Data) data).rollback();
    } finally {
      if (data != null)
        ((Data) data).close();
    }
	}
}

}

피드백