반응형

CDS View를 생성할 때, Join과 Association 간의 차이점을 간단하게 정리한다.

 

정리

구분 Join Association
데이터 결합 시점 즉시 결합 (쿼리 실행 시 무조건 JOIN 발생) 필요할 때만 결합 (Lazy Loading*)
쿼리 실행 방식 항상 JOIN이 실행됨 SELECT 시 관련 필드를 조회할 때만 JOIN 발생
성능 JOIN이 많아지면 성능 저하 가능 불필요한 JOIN을 방지하여 성능 최적화 가능
활용 목적 모든 데이터를 즉시 가져올 때 사용 OData, UI5 등에서 필요한 데이터만 로드할 때 사용
사용 예시 INNER JOIN, LEFT OUTER JOIN 사용 가능 ASSOCIATION [0..1] to 사용

 

Lazy Loading

Lazy Loading(지연 로딩)은 필요할 때만 데이터를 가져오는 방식이다.
초기에 모든 데이터를 한 번에 불러오지 않고, 실제로 필요한 시점에서 데이터를 로딩하는 것이다.

반대로 Eager Loading(즉시 로딩)이 있으며, 이는 처음부터 모든 데이터를 한 번에 로딩하는 방식이고 Join에 사용되는 방식이다.

 

CDS View에서 ASSOCIATION을 사용하면 기본적으로 연관된 테이블의 데이터는 가져오지 않는다.
쿼리에서 ASSOCIATION에 포함된 필드를 직접 조회하면 그때 JOIN이 실행된다.

 

Association 사용 시 데이터 조회 시점

ASSOCIATION을 선언해도 기본적으로는 JOIN이 실행되지 않고 있다가, 연관된 필드를 SELECT할 때만 관련 테이블의 데이터가 조회된다.

  • ABAP SELECT 문에서 ASSOCIATION 필드를 요청할 때
  • OData에서 $expand 옵션으로 연관 데이터를 요청할 때
  • CDS View에서 연관된 필드를 직접 조회할 때

 

상황에 따라서 필요한 방식을 적용해서 사용하면 된다.

반응형
사서