<학습목표>
1. 계층형 쿼리
2. Mapper Interface
3. 스프링 폼
계층형 쿼리(Hierarchical Query)는 오라클에서만 지원하고 있는 아주 막강한 기능 중의 하나다
관계형(relational)이라는 의미가 서로 평등하고 수평적인 관계를 의미하는 반면 계층형(hirearchical) 구조는 이와는 다르게 평등한 관계가 아닌 계급적이고 수직적인 관계를 가진다
한마디로 말해서 관계형이 평면적이라 한다면 계층형은 수직적 구조라 할수있다
BOM(Bill Of Material)이란? 하나의 완제품이 만들어지는데 필요한 구성품목들의 내역 혹은 조합도를 말함
컴퓨터 구성도(BOM)
계층적 구조에서 사용되는 용어 정리
노드(node) : 원모양으로 표시된 항목을 노드라고 한다. 각각의 품목이 하나의 노드가 되면 실제 테이블에서는 하나의 로우에 대응
부모(parent) : 부모노드라고도 한다. 즉 트리구조에서 상위에 있는 노드를 말한다
자식(child) : 자식노드라고도 한다. 위 그림에서 '모니터'는 컴퓨터의 자식노드이며, 컴퓨터는 모니터와 본체의 부모노드가 된다
리프(leaf) : 리프노드라고도 한다. 더이상 하위에 연결된 노드가 없는 항목을 말한다. 즉 자식노드가 없는 노드라고 할 수 있으며 모니터, 프린터, 랜카드가 이에 해당된다
루트(root) : 계층형, 트리구조에서 최상위에 있는 노드를 말한다. 컴퓨터가 이에 해당
레벨(level) : 트리구조에서의 각각의 계층을 말한다 루트에 해당되는 '컴퓨터'가 1레벨이 되면, 순차적으로 그 하위에 있는 '모니터','본체' 등이 2레벨이 된다
데이블 개수가 하나이며 각각의 품목 정보들은 서로 부모와 자식 관계로 연결되어 있으므로 조인을 사용해야 하는데, 자기 참조 성격이 있으므로 셀프조인을 사용
루트노드에 해당하는 컴퓨터의 경우 가장 상위의 1레벨에 속하기 때문에 PARENT_ID컬럼 값이 NULL이다 그래서 최종 제품인 컴퓨터를 위해 외부 조인도 사용
=> 동일한 테이블인 BOM을 각각 bom1, bom2라는 별칭(alias)을 주어 셀프조인을 사용하였고, WHERE 절을 보면 알수있듯이 bom1이 하위 품목을, bom2가 상위품목을 나타냄을 알수있다 가장 상위 품목인 컴퓨터의 경우, 자신이 최상위 계층이고 PARENT_ID컬럼에 NULL이 들어가므로 외부조인을 사용하였다
=> 계층적인 순서로 결과가 나오긴했지만 계층형구조(트리구조)와는 조금 다른 결과이다.
예를 들어 본체의 하위 품목인 메인보드, 랜카드, 파워서플라이 품목이 프린터 바로 밑에 조회되어 마치 프린터의 하위품목인것처럼 보여진다
=> 이문제를 해결하기 위해 오라클에서 지원하는 계층형 쿼리를 살펴보자
START WITH ... CONNECT BY 절은 계층형 정보를 표현하기 위한 목적으로 오라클 8i부터 지원되기 시작.
<form:form> : 폼 요소 생성
<form:input> : 텍스트 필드 요소 생성
<form:password> : 패스워드
<form:textarea> : 텍스트 영역
<form:checkboxes> : 여러개 체크 박스
<form:checkbox> : 체크 박스
<form:radiobuttons> : 여러개 라디오버튼
<form:radiobutton> : 라디오 버튼
<form:select> : 셀렉트 박스
<form:hidden> : 숨겨진 필드
<form:label> : 라벨
<form:button> : 버튼
<form:errors> : 입력값 검증 오류 표시
<전자정부프레임워크 3.10>
Spring, Maven, log4j, ojdbc, dbcp2, common-fileupload, common-io 이 포함되어있다
Spring : DI(의존성 주입), Ioc(제어의 역전), PoJo, AOP 이있다
개발자의 편의성
wizwig에디터