DataGraph 스키마
EJB 중개자에서 작성된 DataGraph 스키마
쿼리에 대한 중개자에서 작성된 스키마는 각 조회 명령문에 대한 Eclass로 구성됩니다. Eclass의 이름은 EJB(Enterprise JavaBeans)의 ASN(Abstract Schema Name)입니다. Eclass의 Eattributes는 CMP(Container-Managed Persistence) 필드 또는 조회 명령문에서 리턴된 표현식에 해당됩니다.
정적 DataObject의 경우, Map 인수가 createMediator 호출에서 사용되면 Eclass 이름은 다를 수 있습니다.
FROM 또는 XREL 절에서 지정된 각 EJB 관계는 Ereference를 스키마에 추가합니다. EJB 관계는 단방향 또는 양방향일 수 있습니다. 그러나 업데이트 시 DataGraph를 효과적으로 이동해야 하기 때문에 모든 Ereference는 양방향으로 정의됩니다. 역관계 이름은 단방향 EJB 관계의 경우 생성됩니다. 생성된 이름의 포맷은 <ASName_source><ASName_target>입니다. 예를 들어, ASNames가 EmpBean 및 DeptBean이고 단방향 관계가 dept로, EmpBean에서 DeptBean으로 이동하면, 생성된 역이름은 DeptBeanEmpBean입니다.
- DataObject Eclass 이름은 해당 EJB ASN(Abstract Schema Names)입니다.
- DataObject 속성 이름과 유형은 조회 SELECT 절의 표현식 이름 및 유형입니다.
- DataObject 참조 이름과 유형은 FROM 절에서 참조된 EJB 관계에서 가져옵니다.
Eclass 이름이 DataGraphRoot인 더미 DataObject가 작성되며 모든 DataObject에 대한 포함 참조가 있습니다. EJB ASN 이름을 사용하여 참조는 다중 값을 가집니다.
DataObject root = m.getGraph( parms );
root.getType().getName(); // this would return the string "DataGraphRoot"
List depts = (List) root.get("DeptBean");
// the list of all DeptBean SDOs in the DataGraph
List emps = (List) root.get("EmpBean");
// the list of all EmpBean SDOs in the DataGraph
DataGraph 포함 패턴
SDO(Service Data Objects) 간 참조는 포함 참조로 정의될 수 있으며, SDO가 삭제된 경우 삭제가 포함된 SDO 모두에 캐스케이드됩니다. 또한, DataGraph가 XML 문서로 직렬화되면, 포함된 SDO가 상위 SDO 내에 중첩됩니다. 비포함 참조는 XML 문서에서 경로 표현식으로 표현됩니다.
DataGraph 스키마에서 포함이 정의되어야 합니다. 중개자가 스키마를 정의하면 루트 SDO(DataGraphRoot라는)는 기타 모든 SDO를 포함합니다. EJB 관계는 비포함 SDO 참조로 정의됩니다.
- ROOT_CONTAINS_ALL
- 이 패턴에는 루트인 더미 SDO가 있습니다. EJB에 해당되지 않는다는 점에서 더미입니다. 기타 모든 SDO를 포함하고자 하는 것입니다. 중개자가 그래프 스키마를 생성하는 경우, 더미 루트에는 DataGraphRoot의 클래스 이름이 있으며 이름이 EJB ASN 이름인 참조를 포함합니다. 호출자가 정적 스키마를 사용하면 루트는 임의의 이름을 가질 수 있습니다. 루트의 Eclass가 createMediator 호출 시 전달됩니다.
- ROOT_CONTAINS_SOME
- 이 패턴은 정적 스키마에만 적용 가능합니다. 그래프 루트인 더미 SDO가 여전히 있습니다. 기타 SDO는 조회 명령문에서 사용된 EJB 관계에 해당하는 Ereference에 포함되거나 또는 SDO가 더미 루트에 포함되어야 합니다.
- NO_DUMMY ROOT
- 이 패턴은 정적 스키마에만 적용 가능합니다. 더미 루트는 없습니다. 루트 SDO는 단일 인스턴스만을 리턴해야 하는 첫 번째 조회 명령문에 해당됩니다. 비루트 SDO는 조회 명령문에서 사용된 EJB 관계에 해당하는 Ereference에 포함되어야 합니다.