Klassen, die verschachtelte pureQuery-Beans definieren

Sie erstellen Java-Klassen, die die verschachtelten pureQuery-Beans definieren. Die Annotationen in den Eigenschaften der Klassen definieren die Hierarchie der verschachtelten Beans.
Diese Klassen definieren die verschachtelten pureQuery-Beispielbeans:
  • Die Klasse Dept1 definiert die Bean der höchsten Ebene. Die Bean-Eigenschaften werden durch get- und set-Methoden definiert.
  • Die Klasse Dept2 definiert eine Bean der höchsten Ebene. Die Bean-Eigenschaften werden durch öffentliche Felder definiert.
  • Die Klasse Emp definiert die untergeordnete Bean, die mit der Schnittstelle und der Inline-SQL-Anweisung verwendet wird.
In diesem Beispiel wird die Bean Dept1 mit einer Schnittstelle und die Bean Dept2 mit einer Inline-SQL-Anweisung verwendet.

Die Klassen definieren Beans, die Daten aus der SQL-Beispielabfrage zurückgeben. Die Abfrage wird als Inline-SQL-Abfrage und in der Beispielschnittstellenklasse verwendet.

JUnit-Testmethoden rufen pureQuery-Methoden auf, um die Beans zu instanziieren und zu füllen. Die Testmethode listet den Inhalt der Beans auf.

In der Beispielschnittstelle referenzierte Klasse Dept1

Die Klasse Dept1 ist die Bean der höchsten Ebene in der Gruppe verschachtelter pureQuery-Beans. Die Klasse Dept1 definiert die get- und set-Methoden für die Abteilungs-ID und die Abteilungsbezeichnung aus der Tabelle ORGANIZATION. Die Bean definiert auch eine get- und set-Methode für Emp-Beans.

Für eine Bean der höchsten Ebene ist mindestens eine Annotation @Id erforderlich. Die Annotation @JoinPoint verweist auf die Liste der Emp-Beans als untergeordnete Beans. Die Annotation @JoinColumn gibt die Spalte EMPLOYEE_CODE als Identitätsspalte an, die die untergeordneten Emp-Beans mit der übergeordneten Bean Dept1 verknüpft. Wenn die Bean Dept1 die übergeordnete Bean ist, werden Annotationen @Id in der Bean Emp ignoriert, weil @JoinColumn angegeben ist.

package mytest;

import java.util.List;

import com.ibm.pdq.annotation.Column;
import com.ibm.pdq.annotation.Id;
import com.ibm.pdq.annotation.JoinColumn;
import com.ibm.pdq.annotation.JoinPoint;
import com.ibm.pdq.annotation.Table;

@Table(name = "ORGANIZATION")
public class Dept1 {
    private String deptCode;
    private String deptNameEn;
    private List<Emp> deptEmployees;

    @Id
    @Column(name = "ORGANIZATION_CODE")
    public String getDeptCode() {
        return deptCode;
    }

    public void setDeptCode(String orgCode) {
        this.deptCode = orgCode;
    }

    @Column(name = "ORGANIZATION_NAME_EN")
    public String getDeptNameEn() {
        return deptNameEn;
    }

    public void setDeptNameEn(String orgNameEn) {
        this.deptNameEn = orgNameEn;
    }

    @JoinPoint(@JoinColumn(name = "EMPLOYEE_CODE", table = "EMPLOYEE", propertyName = "employeeId"))
    public List<Emp> getDeptEmployees() {
        return deptEmployees;
    }

    public void setDeptEmployees(List<Emp> deptEmployees) {
        this.deptEmployees = deptEmployees;
    }

}

Mit einer Inline-SQL-Abfrage referenzierte Klasse Dept2

Die Klasse Dept2 wird mit dem Test für Inline-SQL verwendet. Die Klasse definiert öffentliche Felder, um die Bean-Eigenschaften zu definieren.

Für die Bean der höchsten Ebene ist mindestens eine Annotation @Id erforderlich. Die Annotation @JoinPoint verweist auf die Liste der Emp-Beans als untergeordnete Beans. Die Annotation @JoinPoint enthält keine Annotation @JoinColumn für die Angabe der Identitätsspalte. Wird keine Annotation @JoinColumn angegeben, wird die Eigenschaft der untergeordneten Bean mit der Annotation @Id verwendet. In der Beispielklasse Emp gehört die Annotation @Id zur Eigenschaft der Spalte EMPLOYEE_CODE in der Tabelle EMPLOYEE.
package mytest;

import java.util.List;

import com.ibm.pdq.annotation.Column;
import com.ibm.pdq.annotation.Id;
import com.ibm.pdq.annotation.JoinColumn;
import com.ibm.pdq.annotation.JoinPoint;
import com.ibm.pdq.annotation.Table;

@Table(name = "ORGANIZATION")
public class Dept2 {

    @Id
    @Column(name = "ORGANIZATION_CODE")
    public String deptCode;

    @Column(name = "ORGANIZATION_NAME_EN")
    public String deptNameEn;

    @JoinPoint
    public List<Emp> deptEmployees;

}

Im Beispiel referenzierte Klasse Emp

Die Klasse Emp enthält die Informationen aus den Tabellen EMPLOYEE und EMPOYEE_HISTORY. Die Annotation @Table für die Klasse gibt die Tabelle EMPLOYEE an. Die Annotation @Column für die Methode getWorkDept( ) gibt die Tabelle EMPOYEE_HISTORY an.

Die Klasse enthält get- und set-Methoden für Mitarbeiterinformationen aus den Tabellen. Die Annotation @Id gibt die Spalte EMPLOYEE_CODE an, die die Spalte als Identitätsspalte für die Annotation @JoinPoint in der Klasse Dept2 angibt. Für die Klasse Dept1 wird die Identitätsspalte über die Eigenschaftswerte @JoinColumn definiert.

package mytest;

import com.ibm.pdq.annotation.Column;
import com.ibm.pdq.annotation.Id;
import com.ibm.pdq.annotation.Table;

@Table(name = "EMPLOYEE")
public class Emp {
    private Integer employeeId;
    private String firstName;
    private String lastName;
    private String workDept;
    private java.sql.Date hireDate;

    @Id
    @Column(name = "EMPLOYEE_CODE")
    public Integer getEmployeeId() {
        return employeeId;
    }

    public void setEmployeeId(Integer empCode) {
        this.employeeId = empCode;
    }

    public String toString() {
        return " ID: " + employeeId;
    }

    @Column(name = "FIRST_NAME")
    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    @Column(name = "LAST_NAME")
    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    @Column(name = "ORGANIZATIION_CODE", table = "EMPLOYEE_HISTORY")
    public String getWorkDept() {
        return workDept;
    }

    public void setWorkDept(String workDept) {
        this.workDept = workDept;
    }

    @Column(name = "DATE_HIRED")
    public java.sql.Date getHireDate() {
        return hireDate;
    }

    public void setHireDate(java.sql.Date hireDate) {
        this.hireDate = hireDate;
    }
}

Feedback