====== SQLMap Editor ====== ===== 개요 ===== SQLMap Editor는 SQL Map File 을 쉽고 편리하게 편집할 수 있도록 지원하는 개발도구이다. 사용자는 XML 문법을 잘 알지 못해도 SQLMap Editor의 Form UI를 사용하여 쉽게 SQL Map File을 작성할 수 있다. 또한 SQLMap Editor는 XML 작성시에 사용자가 범할 수 있는 오타로 인한 오작동을 최소화할 수 있다. SQLMap Editor의 주요기능은 다음과 같다. * CRUD Query의 추가/수정/삭제 한다. * Query Builder 기능이다. * Query Test 기능이다. * ParameterMap 설정한다. * ResultMap 설정한다. * Alias 설정한다. * 각 그룹별 ID 중복체크 기능이다. * Outline을 통한 각 그룹별 ID 바로가기 기능이다. * Custom Layout 조정 기능이다. ===== 설명 ===== ==== 화면 ==== {{:egovframework:dev2:imp:dbio:sqlmap:sqlmapeditor.png|}} \\ <그림 1> SQL Map Editor 의 화면 구성 ① SqlMap Namespace, 그룹별 구성요소 Tree 편집 화면이다. \\ ② SqlMap 내에 속한 Query, ParameterMap, ResultMap, Alias 등 각 구성요소에 대한 편집 화면, 구성요소별 편집화면이 다르다. \\ ③ 사용자 LayOut 조정 기능이다. (Horizontal, Vertical 선택) \\ ④ SqlMap 구성 Outline이다. \\ ⑤ Query Result View 화면, Query Test 결과를 보여준다. \\ ⑥ SqlMap 파일을 수정할 때 사용자는 Form UI 를 사용할 것인지 XML 소스를 직접 수정할 것인지 선택할 수 있다. ==== 주요기능 ==== === SQLMap Tree === SQLMap Editor에서는 SQLMap 파일 내에 있는 Query, ParameterMap, ResultMap, Alias 그룹에 대한 각 구성요소를 Tree 형태로 표현하여 사용자가 SQLMap 구성을 쉽게 이해할 수 있도록 도와준다. (<그림 1> ① 참조) 또한 SQLMap Tree는 각 구성요소를 쉽게 접근하여 추가, 수정, 삭제 등의 작업을 수월하게 할 수 있도록 도와준다. === CRUD Query 작성 === SQLMap 파일은 쿼리 매핑 구문에 따라 그에 관련된 XML 요소가 다르다(<표 1> 참조). SQL Map Editor는 해당 구문타입 속성에 적합한 편집화면을 제공하므로 편리하게 작성할 수 있다. (<그림 1> ② 참조) ^ 구문타입 ^ 속성 ^ 설명 ^ | select | id, parameterClass,resultClass, parameterMap, resultMap | 데이터 조회 | | insert | id, parameterClass,parameterMap | 데이터 입력 | | update | id, parameterClass,parameterMap | 데이터 수정 | | delete | id, parameterClass,parameterMap | 데이터 삭제 | <표 1> 쿼리 매핑구문의 타입과 그에 관련된 XML 요소 Query 편집화면은 In/Out, Query, Test 탭으로 구분된다. == In/Out == Query에 사용될 Parameter, Result 를 작성한다. Parameter나 Result는 둘 다 Class 또는 ParameterMap 중 하나를 선택하여 지정할 수 있다. Result는 select Query 인 경우에만, 해당한다. 만약, 사용자가 Alias 를 사전에 생성한 경우 Class 선택항목에 Alias 항목도 별도로 추가되어 나타난다. == Query == Query ID 를 변경하거나, Query 내용을 편집하고, Query Test 에 필요한 데이타베이스 접속 정보를 선택할 수 있다. == Test == Query 에 대한 Binding Variable 값을 지정하거나 입력하고, 해당 쿼리를 Test할 수 있다. Row Limit 값을 입력하면 Query Result View 에 조회되는 결과 행수를 제한할 수 있다. === Query Builder 기능 === SQLMap Editor는 Query Builder 기능을 제공하기 때문에, 사용자가 쿼리를 작성할 때, 별도의 Database Client 를 사용하여 테이블명과 컬럼명을 확인할 필요가 없다. SQL Map Editor의 Query Builder 는 Database 내의 Table List, Column Name 등을 조회, 확인할 수 있도록 해줄 뿐 아니라 단순 쿼리의 경우 자동생성 기능으로 신속하게 쿼리를 작성할 수 있다. 물론, 별도의 쿼리 테스트 기능을 가지고 있지만, 단순쿼리의 경우 Query Builder 상에서도 쿼리 결과를 확인할 수 있다. === Query Test 기능 === 사용자는 단순 Query 외에도 Parameters 를 적용하여 복잡한 쿼리를 작성할 가능성이 높다. 해당 쿼리에 대해서는 먼저 Query Test를 통해 Query에 대한 Validation이 이루어져야 할 것이다. SQL Map Editor는 쿼리 테스트 기능을 통해 Query에 대한 Validation 을 제공한다. === ParameterMap 작성 === 사용자는 SQL Map Editor의 Form UI를 통해 쉽게 ParameterMap을 작성할 수 있다. id와 class 속성 외의 항목은 Property 목록에 사용자가 프로젝트에 맞게 개별적으로 추가할 수 있다. 사용자가 정의한 parameterMap 요소는 CRUD Query 의 Parameter를 지정할 때 활용할 수 있다. === ResultMap 작성 === ResultMap은 SQL Map 파일의 구성요소 중 요소에 해당한다. SQL Map Editor의 Form UI를 통해 요소를 쉽게 작성할 수 있다. ParameterMap과 마찬가지로 id와 class 속성 외의 항목은 Property 목록에 사용자가 프로젝트에 맞게 개별적으로 추가할 수 있다. 사용자가 정의한 resultMap 요소는 select Query 의 Result 를 지정할 때 활용할 수 있다. === Alias 작성 === Alias 는 SQLMap XML 구성요소 중 에 해당한다. 요소는 클래스에 대한 별칭을 지정한다. Alias를 적절히 활용하면 parameter나 result를 지정할 때 자주 사용되는 특정 클래스를 일일이 찾지 않아도 쉽고 빠르게 지정할 수 있다. === 각 그룹별 ID 중복체크 기능 === 사용자가 다수의 SQLMap 구성요소를 작성하고 편집하는 과정에서 구성요소의 ID가 중복될 경우 작성된 SQLMap이 오작동할 가능성이 높다. SQLMap Editor는 사용자가 각 그룹별 구성요소를 추가/수정/삭제할 때, ID 중복체크를 자동으로 처리한다. ID가 중복되었거나 공백인 경우 경고메시지를 보여줌으로써 사용자의 실수를 미연에 방지할 수 있다. === Custom Layout 조정 기능 === 사용자 작성의 편이성을 고려하여 SQLMap Editor는 Horizontal, Vertical 2가지의 화면 Layout을 제공한다. 사용자가 적절히 선택해서 사용하면 된다. (<그림 1> ③ 참조) === SQLMap Outline === SqlMap Editor는 사용자가 XML 소스를 직접 수정할 때, SqlMap Outline View 를 제공하여 현재 작성중인 SQLMap 구성에 대한 이해를 도와준다. SqlMap Outline에서 특정 구성요소를 클릭할 경우 해당 구성요소의 편집화면으로 이동한다. (<그림 1> ④ 참조) ===== 사용법 ===== ==== SqlMap File 새로 만들기 ==== - 상단 메뉴의 (("eGovFrame" 메뉴는 eGovFrame Perspective 환경에서만 나타난다.)) eGovFrame -> Implementation -> New SQL Map 또는 Context Menu의 New -> sqlMap 를 통해 파일을 생성한다. (<그림 2> 과 <그림 3> 참조) \\ \\ - SqlMapConfig 파일이 위치할 폴더를 선택하고 파일명을 입력한다.(<그림 4> 참조) {{:egovframework:dev2:imp:dbio:sqlmap:sqlmapeditor_newfile.png|}} \\ <그림 2> SQL Map 파일의 생성방법1 {{:egovframework:dev2:imp:dbio:sqlmap:sqlmapeditor_newfile2.png?600X400|}} \\ <그림 3> SQL Map 파일의 생성방법2 {{:egovframework:dev2:imp:editor:dbio_editor:sqlmapeditor_newfile3.png|}} \\ <그림 4> SQL Map 파일의 생성3 ==== SqlMap Editor 열기 ==== Pakage Explorer 에서 해당 SQL Map File을 선택하고 더블클릭하거나 열기를 누르면 자동으로 SQL Map Editor로 열리게 된다. 단, SQL Map file에 이상이 있거나, 다른 이유로 SQL Map Editor 로 열리지 않을 때에는 context menu 의 open with 기능을 사용하여 editor 를 SQL Map Editor로 선택해야 한다. (<그림 5> 참조) {{:egovframework:dev2:imp:dbio:sqlmap:sqlmapeditor_open.png|}} \\ <그림 5> SQL Map Editor 로 열리지 않는 경우 ==== 신규 Query Map의 작성 ==== - SqlMap Editor 화면 중 좌측 ((SqlMap Editor 편집화면 LayOut 은 사용자의 선택에 따라 Horizontal, Vertical 등으로 바뀔 수 있다. 하지만, 여기서는 초기상태는 Vertical Layout 상태를 가정하고 설명한다.)) 에 있는 SQLMap Tree 에서 마우스 오른쪽 키를 누르면 context menu 가 나타난다 (<그림 6> 참조). - context menu 에서 "Add XXX Query" 를 선택한다.(단, Select/Insert/Update/Delete 속성에 따라 적합한 쿼리 생성을 선택한다.) - 신규로 생성한 Query 속성에 따른 편집화면이 SQLMap Tree 우측에 나타난다. - In/Out 탭에서 Parameter의 Map 또는 Class 를 선택한 후 적절한 항목을 선택한다. \\ 라디오 버튼을 사용하여 Map 또는 Class 방식을 선택하면 선택한 방식에 따라서 Map 또는 Class 입력항목이 활성화되거나 비활성화된다. \\ 또한, 특정 클래스에 대하여 사전에 정의된 Alias 가 있는 경우 Class 입력항목에 Alias 도 함께 포함되어 나타난다(<그림 7> 참조). - Select Query의 경우 In/Out 탭에 Result 항목이 추가되어 나타나므로 Parameter 항목과 동일한 방법으로 Result 항목을 입력한다. - Query 탭에서 Query ID를 수정하거나, 쿼리를 작성할 수 있다(<그림 8> 참조). Query 작성이 어려운 경우에는 Query Builder를 사용하면 보다 쉽게 Query 를 작성할 수 있다. 단, Query Builder를 사용하려면 먼저 적절한 데이타베이스 연결을 선택해야 하는 데, 데이타베이스 연결을 미리 설정하지 않은 경우 데이타베이스 연결을 선택할 수 없다. 데이타베이스 연결 설정은 Data source explorer 를 사용하여 설정할 수 있다. . {{:egovframework:dev2:imp:editor:dbio_editor:sqlmapeditor_contextmenu.png|}} \\ <그림 6> SQL Map Tree의 Context menu {{:egovframework:dev2:imp:editor:dbio_editor:sqlmapeditor_inout.png|}} \\ <그림 7> QueryMap 의 In/Out 설정 {{:egovframework:dev2:imp:editor:dbio_editor:sqlmapeditor_querytab.png|}} \\ <그림 8> SQL Map Editor의 기본 Query 편집화면 ==== Query Builder 사용하기 ==== - SqlMap Editor의 Query 편집화면에서 Query 탭에는 Query Builder 기능을 내장하고 있다. - Query Builder를 사용하기 위해 먼저 "DB Info*:" 항목에서 적절한 데이타베이스 연결을 선택한다. 항목이 보이지 않는 경우 데이타베이스 연결을 미리 설정하지 않은 경우이다. - "DB Info*:" 항목 우측에 있는 "Open Query Builder"를 클릭하면 SQL Query Builder 화면이 오픈된다. Query Builder의 세부 사용법은 다음과 같다. === Query Builder === {{:egovframework:dev2:imp:editor:dbio_editor:sqlmapeditor_querybuilder.png|}} \\ <그림 9> SQL Map Editor의 Query Builder 실행화면 == 사용할 테이블 추가하기 == - 테이블 조회 화면에서 마우스 오른쪽 버튼을 클릭하면 "Add Table..." 메뉴가 나타난다. - "Add Table..." 메뉴를 선택하면 "Add Table" 다이어로그 창이 오픈된다. - "Add Table" 다이어로그 창에서 사용할 Table 또는 View 를 선택한다. - "Add Table" 다이어로그 창에 있는 "Table Alias" 입력 항목을 통해 Table Alias를 지정할 수 있다. - "OK" 를 클릭하면 테이블 조회 화면에 해당 테이블의 스키마가 나타나고, Query Builder의 쿼리 편집화면에 해당 테이블이 추가된다. == 테이블간 JOIN하기 == - 테이블 조회 화면에 둘 이상의 테이블을 추가한다. - JOIN할 컬럼을 클릭하고 대상 컬럼에 드래그하면 선이 연결되면서 Query Builder의 쿼리 편집화면에 JOIN 구문이 추가된다. - JOIN을 나타내는 LINE 상에서 마우스 오른쪽키를 누르면 JOIN TYPE 을 지정할 수도 있다. == 조회할 컬럼 지정하기 == - Query Builder에서 SELECT 쿼리의 초기 상태는 특정 컬럼이 명시되어 있지 않은 "SELECT * FROM" 이다. - 테이블 조회 화면에 추가된 테이블 내에는 조회/사용 가능한 컬럼명이 명시되어 있다. - 마우스를 사용하여 컬럼명 좌측에 있는 CHECK BOX 를 클릭하면 특정 컬럼의 조회 여부를 결정할 수 있다. - 조회할 컬럼명에 ALIAS 를 적용하기 위해서는 Query Builder 하단에 있는 columns 탭을 활용하여 Column Alias 를 입력할 수 있다. == Where 조건절 만들기 == - Select Query 에서 Where 조건절을 만들기 위해서는 Query Builder 하단에 있는 Conditions 탭을 사용한다. - column 항목에 기준 컬럼명을 선택하고 Operator 와 Value 값을 지정하면 where 조건절을 생성할 수 있다. - 하나 이상의 where 조건절을 사용하는 경우 AND/OR 을 선택하여 조건절을 결합할 수 있다. == Group By 절 만들기 == - Query Builder에서 Group By 절을 생성하기 위해서는 Query Builder 하단에 있는 Groups 탭을 사용하면 된다. - Groups 탭 오른쪽에 있는 Grouping 할 Column 항목을 적절히 선택한다. - Group By 절에서 Having 조건을 사용하기 원할 때는 Group Conditions 탭을 사용하면 된다. Group Conditions의 사용법은 Conditions의 사용법과 같다. == Union 절 만들기 == - Union 절을 생성하려면 Query Builder 중앙 우측에 있는 Query Tree 를 사용하면 된다. - Query Tree 에서 마우스 오른쪽 키를 클릭하면 context menu 가 나타난다. - context menu 중 Conveert to FULLSELECT (UNION) 메뉴를 선택하면 작성한 쿼리에 UNION 이 추가되고, Query Tree 도 확장된다. == 쿼리 실행하기 == - 작성한 쿼리는 Query Builder 내에서도 결과 조회가 가능하다. Query 에 대한 결과 조회를 하려면 Query Builder상단에 있는 쿼리편집기를 사용한다. - 쿼리편집기 화면에서 마우스 오른쪽 키를 누르면 context menu 가 나타난다. - context menu 중에서 Run SQL 메뉴를 선택한다. - Query Builder 내에 있는 "SQL Result" 탭으로 이동하면서 쿼리 수행결과를 보여준다. == 기타 기능 == * 여기에 기술된 기능외에도 Query Builder는 사용자가 쿼리를 쉽고 편리하게 작성할 수 있도록 많은 기능을 제공한다. ==== 작성한 쿼리 테스트하기 ==== - 직성한 쿼리를 테스트하기 위해서는 Database 연결 설정이 먼저 요구된다. Database 연결 설정은 "DBIO:Database 연결 설정" 도움말을 참고한다. - 쿼리를 작성한 후 SqlMap Editor의 Query 탭 상단에 있는 "DB Info*:" 항목에서 적절한 데이타베이스 연결이 선택되었는 지 확인한다. - 쿼리 내에 variable을 사용한 경우 SqlMap Editor의 Test 탭에서 Binding Variables 값을 입력해 주어야 한다. 쿼리 내의 variable 은 # 또는 $ 을 사용하여 지정할 수 있다. (컬럼명=#변수명# 또는 컬럼명=$변수명$). - SqlMap Editor의 Test 탭에서 "Binding Variables" 목록 우측에 있는 "Set Param" 버튼을 누르면 쿼리에서 사용한 변수명이 자동으로 Parameter 항목에 추가된다. - "Binding Variables" 목록에 나열된 Parameter별로 적절한 테스트 value 값을 입력한다(<그림 10> 참조). - SqlMap Editor의 Test 탭에서 "Binding Variables" 목록 우측에 있는 "Test Query" 버튼을 누르면 하단에 Result View 가 자동으로 보이면서 쿼리결과를 보여준다(<그림 11> 참조). - "Binding Variables" 목록 우측에 있는 Row Limit 항목을 사용하여 결과 행수를 제한할 수도 있다. {{:egovframework:dev2:imp:editor:dbio_editor:sqlmapeditor_querytest.png|}} \\ <그림 10> SQL Map Editor의 Query Test 화면 {{:egovframework:dev2:imp:editor:dbio_editor:sqlmapeditor_queryresult.png|}} \\ <그림 11> SQL Map Editor의 Query Test 결과 화면 바인더 변수에 설정 가능한 데이터 타입들 ^ 타 입 ^ 설 명 ^ ^ String | 문자열 표현. | ^ Byte | byte값 표현. | ^ Integer | 정수값 표현. 범위는 -231 ~ 231-1 이다. | ^ Long | 정수값 표현. 범위는 -263 ~ 263-1 이다. | ^ Float | 부동소수값을 표현. 범위는 2-149 ~ (2-2-23) ·2127 이다. | ^ Double | 부동소수값을 표현. 범위는 2-1074 ~ (2-2-52) ·21023 이다. | ^ BigDecimal | 수를 표현. 범위는 unscaledValue × 10-scale 이다. | ※위에서 제공되는 타입과 대응되는 Database의 데이터 타입은 각 Vendor 에서 제공하는 문서를 참조 테스트 가능한 SQL ("?" 바인딩 변수 테스트 불가) * **CDATA 사용**\\ #value#\\ ]]> * **자동생성키**\\ \\ \\ SELECT STOCKIDSEQUENCE.NEXTVAL AS ID FROM DUAL\\ \\ insert into PRODUCT (PRD_ID,PRD_DESCRIPTION)\\ values (#id#,#description#)\\ * **저장프로시저**\\ \\ {call INOUT_TEST(#RESULT_MSG,javaType=java.lang.String,jdbcType=VARCHAR,mode=INOUT#, #char_value#)}\\ * **parameterClass**\\ \\ insert into PRODUCT values (#id#, #description#, #price#)\\ * **인라인 파라미터 Maps**\\ \\ insert into PRODUCT (PRD_ID, PRD_DESCRIPTION)\\ values (#id:NUMERIC:-999999#, #description:VARCHAR:NO_ENTRY#);\\ * **동적으로 맵핑되는 Statements**\\ * **Binary 조건적인 요소**\\ ,, , , , * **Unary 조건적인 요소 일부**\\ , , , , , * **간단한 동적 SQL요소**\\ $바인딩변수$, #바인딩변수# ==== 신규 ParameterMap 생성 ==== - SqlMap Editor 화면 중 좌측에 있는 SQLMap Tree 에서 마우스 오른쪽 키를 누르면 context menu 가 나타난다. - context menu 에서 "Add ParameterMap" 을 선택한다. - 신규로 생성한 ParameterMap 편집화면이 SQLMap Tree 우측에 나타난다(<그림 12> 참조). - ParameterMap ID를 수정하거나,ParameterMap Class를 지정할 수 있다. ParameterMap Class 가 기본형인 경우 선택항목에서 선택이 가능하다. 기본형이 아닌 경우 "Browse" 버튼을 사용하여 해당 클래스를 검색할 수 있으며 기존에 없는 경우에는 "Class *" 를 눌러 신규로 클래스를 생성해야 한다. - Property를 추가하려면 Property 목록 우측에 있는 "Add"버튼을 사용하여 추가 Property 값을 입력할 수 있다. - Property를 삭제하려면 Property 목록에서 삭제할 Property 항목을 선택하고 우측에 있는 "Remove"버튼을 사용하여 삭제한다. {{:egovframework:dev2:imp:editor:dbio_editor:sqlmapeditor_parameter.png|}} \\ <그림 12> SQL Map Editor의 ParameterMap 작성화면 ==== 신규 ResultMap 생성 ==== - SqlMap Editor 화면 중 좌측에 있는 SQLMap Tree 에서 마우스 오른쪽 키를 누르면 context menu 가 나타난다. - context menu 에서 "Add ResultMap" 을 선택한다. - 신규로 생성한 ResultMap 편집화면이 SQLMap Tree 우측에 나타난다(<그림 13> 참조). - ResultMap ID를 수정하거나,ResultMap Class를 지정할 수 있다. ResultMapClass 가 기본형인 경우 선택항목에서 선택이 가능하다. 기본형이 아닌 경우 "Browse" 버튼을 사용하여 해당 클래스를 검색할 수 있으며 기존에 없는 경우에는 "Class *" 를 눌러 신규로 클래스를 생성해야 한다. - Property를 추가하려면 Property 목록 우측에 있는 "Add"버튼을 사용하여 추가 Property 값을 입력할 수 있다. - Property를 삭제하려면 Property 목록에서 삭제할 Property 항목을 선택하고 우측에 있는 "Remove"버튼을 사용하여 삭제한다. {{:egovframework:dev2:imp:editor:dbio_editor:sqlmapeditor_result.png|}} \\ <그림 13> SQL Map Editor의 ResultMap 작성화면 ==== Alias 설정하기 ==== - SqlMap Editor 화면 중 좌측에 있는 SQLMap Tree 에서 마우스 오른쪽 키를 누르면 context menu 가 나타난다. - context menu 에서 "Add Alias" 을 선택한다. - 신규로 생성한 Alias 편집화면이 SQLMap Tree 우측에 나타난다(<그림 14> 참조). - Alias 이름을 수정하거나,Alias를 적용할 Class를 지정할 수 있다. Class 가 기본형인 경우 선택항목에서 선택이 가능하다. 기본형이 아닌 경우 "Browse" 버튼을 사용하여 해당 클래스를 검색할 수 있으며 기존에 없는 경우에는 "Class *" 를 눌러 신규로 클래스를 생성해야 한다. {{:egovframework:dev2:imp:editor:dbio_editor:sqlmapeditor_alias.png|}} \\ <그림 14> SQL Map Editor의 Alias 작성화면 ==== SqlMap.XML 소스 직접 수정하기 ==== - SqlMap Editor 하단에 있는 "SQL Map" 탭 오른쪽에 있는 "화일명.XML" 탭을 클릭하면 사용자가 XML 소스를 직접 수정할 수 있다. \\ \\ - 이 경우 SqlMap Outline 이 자동으로 Open 되면서 현재 작성중인 SqlMap Tree를 보여주어 사용자의 XML 작성을 도와준다(<그림 15> 참조). {{:egovframework:dev2:imp:editor:dbio_editor:sqlmapeditor_xmlsource.png|}} \\ <그림 15> SQL Map Editor의 XML Source 편집