이 예제에서는 다음과 같은 HRDEPT.EMPLOYEE 테이블의 단순 정의를 사용합니다.
CREATE TABLE HRDEPT.EMPLOYEE( EMPNO CHAR(6) NOT NULL, FIRSTNME VARCHAR(12) NOT NULL, MIDINIT CHAR(1), LASTNAME VARCHAR(15), WORKDEPT CHAR(2), PHONENO CHAR(4), HIREDATE DATE, PRIMARY KEY(EMPNO))
이 테이블에 해당하는 Bean은 다음과 같을 수 있습니다.
public Employee { public String employeeId; public String firstName; public String middleInitial; public String lastName; public String departmentId; public String extension; public Date hireDate; }
이 Bean의 인스턴스는 예 코드에서 HRDEPT.EMPLOYEE 테이블에 삽입되는 레코드에서 값을 제공합니다. Bean을 사용하여 SQL문에 입력 매개변수를 제공하는 경우, SQL문의 매개변수 표시문자는 SQL에서 각 매개변수의 값을 제공하는 Bean 특성을 pureQuery에 알립니다. 따라서 Bean에 있는 특성의 이름과 테이블에 있는 컬럼의 이름이 일치하지 않아도, Bean의 정의는 @Column 어노테이션을 포함하지 않아도 됩니다. pureQuery가 쿼리 결과를 보유하기 위해 이 Bean의 인스턴스를 작성한 경우, Bean 정의에는 특성마다 @Column 어노테이션이 필요합니다.
어노테이션이 있는 메소드를 사용하여 데이터베이스 오브젝트를 조작하는 경우, 해당 메소드를 정의하는 인터페이스를 정의하고 pureQuery Generator를 사용하여 해당 인터페이스의 구현을 생성한 다음 구현 클래스에 있는 메소드를 호출하는 애플리케이션을 작성해야 합니다.
레코드 삽입을 위해 어노테이션이 있는 메소드를 정의하는 인터페이스는 다음과 같습니다.
import com.company.Employee; public interface HumanResources { @Update(sql= "INSERT INTO HRDept.Employee(EMPNO, FIRSTNME, MIDINIT, LASTNAME, WORKDEPT, PHONENO, HIREDATE)" + "VALUES( :employeeId, :firstName, :middleInitial, :lastName, :departmentId, :extension, :hireDate)", int newEmployee( Employee newHire ); }
인터페이스는 SQL문의 업데이트 계수를 표시하는 int를 리턴하고 단일 Employee 오브젝트인 newHire를 사용할 때 newEmployee()라는 메소드를 정의합니다.
인터페이스의 @Update 어노테이션은 newEmployee() 메소드가 호출될 때 실행되는 SQL문을 제공합니다.
HumanResources 인터페이스의 구현을 생성한 후 다음과 같이 애플리케이션에서 해당 구현을 사용할 수 있습니다.
Connection con = DriverManager.getConnection(...); 1 HumanResources hr = 2 DataFactory.getData( HumanResources.class, con ); Employee newCollegeHire = 3 new Employee("000010", "CHRISTINE", "I", "HAAS", "A00", "3978", new java.sql.Date(System.currentTimeMillis())); int oneCount = hr.newEmployee(newCollegeHire); 4
위 코드에서 수행하는 단계는 다음과 같습니다.
INSERT문을 애플리케이션의 소스에 표시하려는 경우, 인라인 프로그래밍 스타일을 사용할 수 있습니다.
애플리케이션에서 Data 인터페이스의 구현에 정의되어 있는 오버로드된 update() 메소드의 버전을 호출합니다.
애플리케이션에서는 다음과 유사한 결과를 표시합니다.
Connection con = DriverManager.getConnection(...); 1 Data db = DataFactory.getData(con); 2 Employee newCollegeHire = 3 new Employee("000010", "CHRISTINE", "I", "HAAS", "A00", "3978", new java.sql.Date(System.currentTimeMillis())); int oneCount = db.update( 4 "INSERT INTO HRDept.Employee(EMPNO, FIRSTNME, MIDINIT, LASTNAME, WORKDEPT, PHONENO, HIREDATE) " + "VALUES(:employeeId, :firstName, :middleInitial, :lastName, :departmentId, :extension, :hireDate )", newCollegeHire );
위 코드에서 수행하는 단계는 다음과 같습니다.