API 유형

API는 키 속성 값에 따라 레코드를 처리하는데 이때 기본 키를 포함한 레코드를 먼저 처리합니다. 기본 키가 없으면 API는 논리 키를 검색한 다음 레코드를 처리합니다. 예를 들어, ChangeOrder() API는 먼저 OrderHeaderKey 키 속성을 찾은 다음 OrderNo 와 EnterpriseCode 키 속성의 조합을 찾습니다.

선택 API

일반적으로 접두부가 "get" 인 선택 API는 엔티티에 대해 하나의 레코드를 리턴합니다. 예를 들어, getOrderDetails() API는 하나의 오더에 대한 상세내역을 리턴합니다. 데이터베이스를 업데이트하지는 않습니다.

select API는 한 개 레코드만 리턴하므로 고유 Key 속성을 입력 XML에 전달해야 합니다. 고유 키 속성을 입력 XML에 전달하지 않으면 API는 레코드 선택 기준에서 이 속성에 대해 공백을 사용합니다. 둘 이상의 고유 키 조합이 있을 수 있으며 해당 조합에서는 여러 조합 중 하나를 전달해야 합니다.

예를 들어, 주문은 OrderHeaderKey 키 속성 또는 OrderNoEnterpriseCode 속성의 조합으로 고유하게 식별됩니다. 따라서 getOrderDetails() API를 호출할 때 OrderHeaderKey 속성 또는 OrderNo, EnterpriseCode 및 DocumentType Key 속성의 조합을 전달해야 합니다. OrderNo만 전달할 경우, API는 OrderNo가 매치되는 엔터프라이즈 코드가 공백인 오더를 리턴합니다. 각 API의 고유 키 조합을 식별하려면 Javadoc을 참조하십시오.

그러나 getOrderDetails( YFS_ORDER_HEADER 에서 select for update를 사용하므로 사용자 종료, 이벤트 등과 같은 내부 프로세스가 작업 중인 스레드가 활성 상태인 동안 주문 요소에 대한 잠금을 보유합니다. 이렇게 하면 마지막 확약까지 트랜잭션 캐시를 유지할 수 있습니다. 따라서 다음을 수행하여 잠금 메커니즘을 극복하기 위해 중첩 트랜잭션 사용을 피해야 합니다.

  1. 모든 오더 이벤트에 대해 한 번만 확약하거나 롤백하십시오. 이 중 하나가 실패할 경우 모든 이벤트가 롤백으로 설정되어야 함을 기억하십시오.
  2. 각 이벤트 및 프로세스에 대해 오더를 선택하십시오. 또한 여러 개의 이벤트를 포함한 오더의 수명이 높으면 성능에 영향을 줄 수 있다는 점도 기억하십시오.

list API

일반적으로 "get" 접두부가 같은 list API는 입력 XML을 통해 지정한 기준에 매치되는 엔티티의 레코드 목록을 리턴합니다(예: getOrderList() API가 오더 목록 리턴). 입력 XML의 속성 중 값이 공백인 속성이 있으면 무시됩니다. list API는 데이터베이스를 업데이트하지 않습니다. getPage API를 호출하고 list API를 getPage API에 대한 입력으로 전달하여 list API에서 페이지 번호를 매긴 데이터를 가져올 수도 있습니다. getPage API에 대한 자세한 정보는 Javadoc을 참조하십시오.

update API

update API는 새 레코드를 데이터베이스에 삽입합니다. 데이터베이스에 있는 기존 레코드를 수정하거나 삭제하기도 합니다. 기존 레코드를 수정하거나 삭제하는 update API는 select API와 동일한 로직을 사용하여 업데이트할 레코드를 식별합니다. 레코드를 찾을 수 없으면 update API가 예외를 발생시킵니다.