< 이전 | 다음 >

학습 3: 생성된 인터페이스 InventoryLevelsData 조사

InventoryLevelsData 인터페이스는 다른 애플리케이션이 INVENTORY_LEVELS 테이블을 쿼리하고 업데이트하기 위해 사용할 수 있는 재사용 가능한 Java 오브젝트입니다.
이 학습에서는 이 인터페이스의 컨텐츠를 자세히 설명합니다.

사용자가 생성한 InventoryLevelsData 인터페이스를 보려면 다음을 수행하십시오.

  1. 중간 분할 영역에서 InventoryLevelsData.java 탭으로 이동하십시오.
  2. 클래스의 섹션을 보십시오. 클래스에 다음 섹션이 있습니다.
    표준 Java 섹션
    첫 번째 섹션은 Java 클래스에 대한 표준입니다. 이 섹션은 클래스가 속하는 Java 패키지를 선언하고, 클래스를 설명하는 주석을 포함하며, 다른 패키지의 클래스를 반입하고 클래스 시작을 선언합니다. 다음 두 개의 import 명령문에 주목하십시오.
    import com.ibm.pdq.annotation.Select;
    import com.ibm.pdq.annotation.Update;
    @Select 및 @Update는 pureQuery가 이 인터페이스에서 사용하는 두 개의 어노테이션입니다. 얼마나 간단하지 보게 됩니다.
    어노테이션이 있는 메소드
    학습 1에서 테이블에서 pureQuery 코드 생성 마법사를 완료한 경우 pureQuery가 포함할 수 있는 모든 SQL문을 생성하도록 지정했습니다. 따라서 인터페이스는 9개의 SQL문을 포함하고 9개의 메소드를 선언합니다. 각 메소드에는 SELECT, INSERT, UPDATE 또는 DELETE 문으로 어노테이션이 지정됩니다.
    SELECT문으로 어노테이션이 지정되는 메소드
    다음 메소드는 @Select 어노테이션을 사용합니다.
    • getInventoryLevelss() 메소드
      getInventoryLevelss() 메소드는 Inventory Levels Bean의 반복자(iterator)를 리턴합니다.
      	// Select all GOSALES.INVENTORY_LEVELSs
      	@Select(sql = "SELECT INVENTORY_YEAR, INVENTORY_MONTH, WAREHOUSE_BRANCH_CODE,"
      	               + "  PRODUCT_NUMBER, OPENING_INVENTORY, QUANTITY_SHIPPED, ADDITIONS,"
      	               + "  UNIT_COST, CLOSING_INVENTORY, AVERAGE_UNIT_COST"
      	               + "  FROM GOSALES.INVENTORY_LEVELS")
      	Iterator<InventoryLevels> getInventoryLevelss();
      어노테이션 이름이 @Select이고 sql 속성을 포함한다는 점에 주목하십시오. SELECT문을 사용할 때 명령문을 이 어노테이션의 sql 속성에 놓으십시오.
      팁: 메소드의 이름을 지정할 때 pureQuery는 Bean 이름 앞에 접두부로 get을 붙입니다. 또한 자동으로 S를 추가합니다. 해당 메소드가 가능한 모든 InventoryLevels Bean을 리턴하기 때문입니다. 따라서 getInventoryLevelss()의 불필요한 S는 잘못된 문자가 아닙니다. 이는 Inventory_level Bean의 복수형을 표시합니다.
    • getInventoryLevels() 메소드는 SELECT문에서 WHERE절에 대한 개별 필드를 사용합니다.
      	// Select GOSALES.INVENTORY_LEVELS by parameters
      	@Select(sql = "SELECT INVENTORY_YEAR, INVENTORY_MONTH, WAREHOUSE_BRANCH_CODE,"
      	               + "  PRODUCT_NUMBER, OPENING_INVENTORY, QUANTITY_SHIPPED, ADDITIONS,"
      	               + "  UNIT_COST, CLOSING_INVENTORY, AVERAGE_UNIT_COST"
      	               + "  FROM GOSALES.INVENTORY_LEVELS"
      	               + "  WHERE INVENTORY_YEAR = ? AND INVENTORY_MONTH = ? AND WAREHOUSE_BRANCH_CODE = ?"
      	               + "    AND PRODUCT_NUMBER = ?")
      	InventoryLevels getInventoryLevels(short inventoryYear,
      			short inventoryMonth, int warehouseBranchCode, int productNumber);
      이 메소드를 사용하면 1차 키를 구성하고 WHERE절에 나열되는 각 열에 대해 개별적 필드를 전달할 수 있습니다. 메소드는 결과와 함께 단일 InventoryLevels Bean을 리턴합니다.
    • getInventoryLevels() 메소드는 매개변수로 InventoryLevels Bean의 인스턴스를 사용합니다.
      	// Select GOSALES.INVENTORY_LEVELS by InventoryLevels object
      	@Select(sql = "SELECT INVENTORY_YEAR, INVENTORY_MONTH, WAREHOUSE_BRANCH_CODE,"
      	               + "  PRODUCT_NUMBER, OPENING_INVENTORY, QUANTITY_SHIPPED, ADDITIONS,"
      	               + "  UNIT_COST, CLOSING_INVENTORY, AVERAGE_UNIT_COST"
      	               + "  FROM GOSALES.INVENTORY_LEVELS"
      	               + "  WHERE INVENTORY_YEAR = :inventoryYear AND INVENTORY_MONTH = :inventoryMonth"
      	               + "    AND WAREHOUSE_BRANCH_CODE = :warehouseBranchCode"
      	               + "    AND PRODUCT_NUMBER = :productNumber")
      	InventoryLevels getInventoryLevels(InventoryLevels i);
      이 메소드를 사용하면 WHERE절에 있는 1차 키 열의 값을 포함하는 InventoryLevels Bean을 전달할 수 있습니다. 메소드는 결과와 함께 단일 InventoryLevels Bean을 리턴합니다.
    INSERT문으로 어노테이션이 지정되는 메소드
    다음 메소드는 @Update 어노테이션을 사용합니다.
    • createInventoryLevels 메소드는 개별 필드를 사용합니다.
      	// Create GOSALES.INVENTORY_LEVELS by parameters
      	@Update(sql = "INSERT INTO GOSALES.INVENTORY_LEVELS (INVENTORY_YEAR, INVENTORY_MONTH,"
      	               + "  WAREHOUSE_BRANCH_CODE, PRODUCT_NUMBER, OPENING_INVENTORY, QUANTITY_SHIPPED,"
      	               + "  ADDITIONS, UNIT_COST, CLOSING_INVENTORY, AVERAGE_UNIT_COST)"
      	               + "  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)")
      	int createInventoryLevels(short inventoryYear, short inventoryMonth,
      			int warehouseBranchCode, int productNumber, int openingInventory,
      			int quantityShipped, int additions, BigDecimal unitCost,
      			int closingInventory, BigDecimal averageUnitCost);
      이 메소드를 사용하면 삽입할 행에 있는 모든 열에 대해 개별적 필드를 전달할 수 있습니다. 삽입이 성공하면 값 1을 리턴하고 삽입이 실패하면 값 0을 리턴합니다.
    • createInventoryLevels() 메소드는 InventoryLevels Bean의 인스턴스를 사용합니다.
      	// Create GOSALES.INVENTORY_LEVELS by InventoryLevels Object
      	@Update(sql = "INSERT INTO GOSALES.INVENTORY_LEVELS (INVENTORY_YEAR, INVENTORY_MONTH,"
      	               + "  WAREHOUSE_BRANCH_CODE, PRODUCT_NUMBER, OPENING_INVENTORY, QUANTITY_SHIPPED,"
      	               + "  ADDITIONS, UNIT_COST, CLOSING_INVENTORY, AVERAGE_UNIT_COST)"
      	               + "  VALUES (:inventoryYear, :inventoryMonth, :warehouseBranchCode,"
      	               + "    :productNumber, :openingInventory, :quantityShipped, :additions,"
      	               + "    :unitCost, :closingInventory, :averageUnitCost)")
      	int createInventoryLevels(InventoryLevels i);
      이 메소드를 사용하면 삽입할 행에 있는 열의 값을 포함하는 InventoryLevels Bean을 전달할 수 있습니다. 삽입이 성공하면 값 1을 리턴하고 삽입이 실패하면 값 0을 리턴합니다.
    UPDATE문으로 어노테이션이 지정되는 메소드
    다음 메소드는 @Update 어노테이션을 사용합니다.
    • updateInventoryLevels() 메소드는 개별 필드를 사용합니다.
      	// Update GOSALES.INVENTORY_LEVELS by parameters
      	@Update(sql = "UPDATE GOSALES.INVENTORY_LEVELS"
      	               + "  SET INVENTORY_YEAR = ?, INVENTORY_MONTH = ?, WAREHOUSE_BRANCH_CODE = ?,"
      	               + "      PRODUCT_NUMBER = ?, OPENING_INVENTORY = ?, QUANTITY_SHIPPED = ?,"
      	               + "      ADDITIONS = ?, UNIT_COST = ?, CLOSING_INVENTORY = ?, AVERAGE_UNIT_COST = ?"
      	               + "  WHERE INVENTORY_YEAR = ? AND INVENTORY_MONTH = ? AND WAREHOUSE_BRANCH_CODE = ?"
      	               + "    AND PRODUCT_NUMBER = ?")
      	int updateInventoryLevels(short inventoryYear, short inventoryMonth,
      			int warehouseBranchCode, int productNumber, int openingInventory,
      			int quantityShipped, int additions, BigDecimal unitCost,
      			int closingInventory, BigDecimal averageUnitCost,
      			short inventoryYear_K, short inventoryMonth_K,
      			int warehouseBranchCode_K, int productNumber_K);
      이 메소드를 사용하면 업데이트할 행에 있는 모든 열에 대해 개별적 필드를 전달할 수 있습니다. 업데이트가 성공하면 값 1을 리턴하고 업데이트가 실패하면 값 0을 리턴합니다.
    • updateInventoryLevels() 메소드는 InventoryLevels Bean의 인스턴스를 시용합니다.
      	// Update one GOSALES.INVENTORY_LEVELS by InventoryLevels object
      	@Update(sql = "UPDATE GOSALES.INVENTORY_LEVELS"
      	               + "  SET OPENING_INVENTORY = :openingInventory, QUANTITY_SHIPPED = :quantityShipped,"
      	               + "      ADDITIONS = :additions, UNIT_COST = :unitCost, CLOSING_INVENTORY = :closingInventory,"
      	               + "      AVERAGE_UNIT_COST = :averageUnitCost"
      	               + "  WHERE INVENTORY_YEAR = :inventoryYear AND INVENTORY_MONTH = :inventoryMonth"
      	               + "    AND WAREHOUSE_BRANCH_CODE = :warehouseBranchCode"
      	               + "    AND PRODUCT_NUMBER = :productNumber")
      	int updateInventoryLevels(InventoryLevels i);
      이 메소드를 사용하면 업데이트할 행에 있는 열의 값을 포함하는 InventoryLevels Bean을 전달할 수 있습니다. 업데이트가 성공하면 값 1을 리턴하고 업데이트가 실패하면 값 0을 리턴합니다.
    DELETE문으로 어노테이션이 지정되는 메소드
    다음 메소드는 @Update 어노테이션을 사용합니다.
    • deleteInventoryLevels() 메소드는 개별 필드를 사용합니다.
      	// Delete GOSALES.INVENTORY_LEVELS by parameters
      	@Update(sql = "DELETE FROM GOSALES.INVENTORY_LEVELS"
      	               + " WHERE INVENTORY_YEAR = ? AND INVENTORY_MONTH = ? AND WAREHOUSE_BRANCH_CODE = ?"
      	               + "    AND PRODUCT_NUMBER = ?")
      	int deleteInventoryLevels(short inventoryYear, short inventoryMonth,
      			int warehouseBranchCode, int productNumber);
      이 메소드를 사용하면 삭제할 행에 있는 모든 1차 키 열에 대해 개별적 필드를 전달할 수 있습니다. 삭제가 성공하면 값 1을 리턴하고 삭제가 실패하면 값 0을 리턴합니다.
    • deleteInventoryLevels() 메소드는 InventoryLevels Bean의 인스턴스를 사용합니다.
      	// Delete one GOSALES.INVENTORY_LEVELS by InventoryLevels object
      	@Update(sql = "DELETE FROM GOSALES.INVENTORY_LEVELS"
      	               + " WHERE INVENTORY_YEAR = :inventoryYear AND INVENTORY_MONTH = :inventoryMonth"
      	               + "    AND WAREHOUSE_BRANCH_CODE = :warehouseBranchCode"
      	               + "    AND PRODUCT_NUMBER = :productNumber")
      	int deleteInventoryLevels(InventoryLevels i);
      이 메소드를 사용하면 삭제할 행에 있는 1차 키 열의 값을 포함하는 InventoryLevels Bean을 전달할 수 있습니다. 삭제가 성공하면 값 1을 리턴하고 삭제가 실패하면 값 0을 리턴합니다.
SQL문을 편집하고 메소드를 추가 또는 제거할 수 있습니다. 나중 세션에서는 SQL문을 쉽게 편집하고 테스트할 수 있도록 만드는 기능에 대해 학습합니다.
< 이전 | 다음 >

피드백