데이터 오브젝트/데이터 오브젝트 팩토리

본 장에서는 데이터 오브젝트 개요, 특징, 구성요소 및 데이터 오브젝트 팩토리 기능에 대해 설명한다.

1. 개요

데이터 오브젝트(Data Object, DO)는 모듈 간 데이터 전달이 가능하며 데이터 오브젝트 Optimizer를 통한 성능 최적화 기능을 제공한다. ProObject는 온라인 및 배치 애플리케이션 성능을 향상시키는 아키텍처 구조로 개발되어 있다.

다음은 구성 요소에 대한 설명이다.

  • Service Object(SO)

    In/Out 구조체, DB 혹은 File에 대한 In/Out의 기능을 수행한다.

  • Data Object(DO) / DO Factory (DOF)

    프로그램을 처리하기 위한 I/O 데이터로 데이터 오브젝트/데이터 오브젝트 팩토리를 통해서만 DB, File에 접근한다. 개발자는 오직 데이터 오브젝트/데이터 오브젝트 팩토리만 바라본다. 데이터 오브젝트 팩토리는 DB, File 두 가지 타입이 존재한다.

    Type 설명

    DO

    여러 형태의 데이터를 담아 모듈 간 데이터 전달에 사용하는 객체로 Data Transfer Object의 기능을 수행한다. 자세한 내용은 데이터 오브젝트를 참고한다.

    DB DOF

    DB를 사용해서 데이터를 조회하거나 조작하는 객체로 DAO(Data Access Object)의 기능을 수행한다. 자세한 내용은 데이터 오브젝트 팩토리(DB)를 참고한다.

    File DOF

    파일을 읽거나 쓰는데 사용하는 객체로 여러 형태의 파일을 가공할 수 있다. 자세한 내용은 데이터 오브젝트 팩토리(FILE)를 참고한다.

  • Query Object(QO)

    데이터베이스에 접근하여 데이터를 조회하거나 조작하는데 사용하는 객체이다. 자세한 내용은 쿼리 오브젝트를 참고한다.

데이터 오브젝트와 파일 데이터 오브젝트 팩토리를 작성할 경우에는 사용할 메타 정보를 반드시 사전에 ProManager에서 등록한다.

2. 데이터 오브젝트

데이터 오브젝트는 데이터 오브젝트 객체를 의미한다. 데이터 오브젝트 객체는 서비스 오브젝트 입출력 전문의 데이터를 담을 수 있는 객체로 모듈 간 데이터 전달에 사용한다. 객체 내 데이터 구성은 메타 정보에 등록된 필드를 사용하여 구성한다. 사용자가 정의한 필드에 대해 getter와 setter가 자동으로 생성되며 필드 관리에 필요한 여러 가지 메소드가 제공된다. 또한 Excel 파일을 이용한 데이터 오브젝트 생성이 가능하다. 본 절에서는 데이터 오브젝트의 기본 개념과 시작하는 방법, 데이터 오브젝트를 사용한 예제를 설명한다.

2.1. 환경설정

데이터 오브젝트를 사용하기 위해서는 Property 등록 및 검색할 수 있는 화면이 필요하다. Property 등록은 ProManager에서 가능하며, Property 검색은 ProStudio의 [MetaData View] 메뉴에서 조회한다.

2.1.1. Property 등록

Property는 메타 시스템에서 등록할 수 있다. 메타 시스템은 서비스 간의 input, output을 전달해야 하는 데이터 오브젝트의 경우 통일된 형식(이름, 길이, 속성)을 갖어야 하기 때문에 미리 등록된 데이터들을 이용한다.

ProManager[Overview] > [Meta] 메뉴를 선택해서 등록된 메타를 이용하여 데이터 오브젝트의 필드를 추가한다. 메타 관리 화면에서 [Search], [Add], [Change], [Delete] 버튼을 클릭해서 메타를 생성 및 관리할 수 있다.

figure promanager meta
ProManager 메타 관리 화면

메타 관리에 대한 자세한 내용은 ProObject Manager 사용자 안내서를 참고한다.

데이터 오브젝트 생성하려면 MetaData View 화면에서 등록된 메타를 조회해야 한다.

MetaData View 화면ProStudio 오른쪽 상단에 위치하며 [Refresh Property Information] 아이콘을 클릭해서 메타 데이터의 타입이나 길이가 변경되었을 때 로컬 Property를 등록된 메타 데이터로 동기화한다. 사용 가능한 메타 타입은 [Property][DO] 탭에서 조회한다.

기본적으로 ProManager에서 등록한 메타만 조회가 가능 하지만, 커스터마이징 서비스로 제공하는 조회 옵션도 제공한다. 자세한 사용 방법은 메타 조회 기능을 참고한다.

  • [Property] 탭

    메타 시스템에 등록된 변수를 검색하여 에디터에 추가할 수 있다.

    figure metadata view
    Property 정보 갱신 - [Property] 탭
    항목 설명

    Project

    Property를 추가할 데이터 오브젝트의 프로젝트를 나타낸다.

    Input

    메타를 입력하여 검색할 수 있다. [Search] 버튼을 클릭하면 'Input' 항목에 입력된 값을 조회한다. 검색하여 리스팅된 메타 값을 지정한 후 [Add] 버튼을 클릭하면 에디터 화면에 필드를 추가할 수 있다.

    검색 명칭

    메타에 등록된 Property를 검색어 명칭으로 검색한다.

    • LogicalName : 논리명 기준으로 조회

    • Group : 그룹 기준으로 조회

    • PhysiclaName : 물리명 기준으로 조회

    검색어 위치

    메타에 등록된 Property를 검색어 위치를 선택해서 검색한다.

    • Contains

    • Starts With

    Property 목록

    'Input' 항목의 값을 기준으로 조회된 Property가 나열된다.

  • [DO] 탭

    기존에 생성된 데이터 오브젝트를 검색하여 에디터에 추가할 수 있다.

    figure metadata view do
    Property 정보 갱신 - [DO] 탭
    항목 설명

    Project

    데이터 오브젝트를 포함할 데이터 오브젝트의 프로젝트를 나타낸다.

    Input

    데이터 오브젝트를 입력하여 검색할 수 있다.

    [Search] 버튼을 클릭하면 'Input' 항목에 입력된 값을 조회한다. 목록에서 메타 값을 더블클릭하면 에디터 화면에 필드를 추가할 수 있다.

    Search Category

    기존에 생성된 데이터 오브젝트 검색 위치를 설정해서 검색한다.

    • Server : DB의 리소스정보(DEV_RSC)기준으로 조회한다.

    • Local : Local의 리소스정보를 기준으로 조회한다.

    • All : Server와 Local을 모두 조회한다.

    Search Name

    기존에 생성된 데이터 오브젝트를 어떤 검색 명칭으로 검색할지 정한다.

    • Logical Name : 논리명 기준으로 조회한다.

    • Physical Name : 물리명 기준으로 조회한다.

    • Package Name : Package Name 기준으로 조회한다.

    Search Condition

    'Input' 항목에 입력된 검색어 위치를 설정해서 데이터 오브젝트를 검색한다.

    • Starts With : Input 값으로 시작하는 내역을 조회한다.

    • Contains : Input 값을 포함하는 내역을 조회한다.

    DO

    'Input' 항목의 값을 기준으로 조회된 데이터 오브젝트가 리스트에 나열된다.

2.2. 데이터 오브젝트 생성

Package Explorer의 컨텍스트 메뉴에서 [New] > [DataObject]를 선택하면 New Data Object 화면에서 데이터 오브젝트 생성할 수 있다.

figure new do wizard
New Data Object 화면
항목 설명

프로젝트

생성할 데이터 오브젝트가 위치할 실제 프로젝트명을 선택한다.

패키지

실제 사용하는 패키지 네이밍 규칙에 따라 패키지명을 정의한다.

리소스를 생성하는 경우 Fix된 Nameing Rule Check 기능을 제공하며, 자세한 내용은 Class Naming Rule Check를 참고한다.

이름

데이터 오브젝트 객체의 논리명을 입력한다.

클래스

데이터 오브젝트의 실제 생성되는 클래스 파일명을 입력한다.

2.3. 데이터 오브젝트 에디터

데이터 오브젝트 에디터는 Super DO 검색 및 등록, 메지지 생성, 필드 편집 영역으로 나뉜다. 메타 및 데이터 오브젝트를 추가, 편집할 수 있으며 필드 편집 내용과 동일하게 FixedLength, XML, Delimiter, JSON 형태로 메시지 생성이 가능하다.

figure do editor
데이터 오브젝트 에디터
  • Super DO

    Super DO를 생성한 후 Super DO를 상속받아 사용할 수 있다.

  • Create Message

    Message Type을 체크하면 메시지 파일이 자동 생성되며 생성된 파일은 Package Explorer에서 확인할 수 있다.

    Message Type 설명

    JSON

    입출력 전문이 JSON 방식으로 구성될 때 적용한다.

    FixedLength

    입출력 전문의 기준이 길이에 따라 구분될 때 적용한다.

    XML

    입출력 전문이 xml 방식으로 구성될 때 적용한다.

    Delimiter

    입출력 전문이 구분자에 의해서 구성될 때 적용한다.

  • Context

    맵 데이터 오브젝트(MapDataObject)는 메타를 통한 멤버변수 선언 없이 사용하기 위한 데이터 오브젝트 이다.

  • 필드

    MetaData View에서 필드 편집 영역으로 컨텍스트 메뉴와 버튼을 이용해서 추가한 필드를 이동, 편집, 삭제할 수 있다.

    • 필드 항목

      항목 설명

      한글명

      메타의 Logical Name(논리명)이다.

      물리명

      메타의 Physical Name이며, Java로 SourceGen될 때 변수의 기준이 된다.

      타입

      메타의 Field Type이다.

      길이

      메시지를 생성하는 경우 기준이 되는 길이이다.

      배열크기

      Array로 변수를 생성하는 경우 1 이상의 값을 입력한다.

      JSON Type의 경우 unbound를 입력하면 가변처리가 가능하다.

      Decimal

      실수형 Type의 경우 유효 소수점 자리수이다.

      Nullable

      Null 값이 입력 가능 여부 이다.

      Default

      메타의 Default Value이며, 변수가 생성될 때의 기본값이다.

      설명

      메타에 대한 상세 내용이다.

    • 컨텍스트 메뉴

      메뉴 설명

      [삭제]

      선택된 필드를 삭제한다.

      [복사]

      선택된 필드를 복사하여 다른 데이터 오브젝트 에디터 필드 영역에 붙여넣기를 할 수 있다.

      [붙여넣기]

      복사된 필드를 필드 에디터에 붙여 넣는다.

    • 버튼

      버튼 설명

      [Reference Sync]

      참조하고 있는 DO(target Do), SO, BO(assign Modules) 정보를 현행화한다.

      [Add MapDataObject]

      MapDataObject를 추가한다.

      MapDataObjectMsgJson를 DO에서 사용하기 위해 제공하는 기능으로 Json Type만 지원한다.

      [MetaField Sync Sync]

      ProManager에서 변경한 메타 정보를 현행화한다.

      [▲]

      여러 개의 필드가 존재할 경우 선택된 필드를 위로 이동할 수 있다.

      [▼]

      여러 개의 필드가 존재할 경우 선택된 필드를 아래로 이동할 수 있다.

2.4. 개발 방법

본 절에서는 데이터 오브젝트를 개발하는 방법을 단일 데이터 오브젝트, Include 데이터 오브젝트, 부모 데이터 오브젝트로 나눠서 설명한다.

2.4.1. 단일 데이터 오브젝트

단일 데이터 오브젝트는 가장 기본적인 데이터 오브젝트 방식으로 다음의 방법으로 개발한다.

  1. 데이터 오브젝트 생성을 참고해서 데이터 오브젝트를 생성한다.

  2. 기존에 생성된 데이터 오브젝트를 오른쪽 MetaData View 화면[Property] 탭(Property 정보 갱신 - [Property] 탭)에서 메타를 검색한다. 추가할 항목을 선택한 후 에디터(데이터 오브젝트 에디터)의 필드 영역에 드래그 앤드 드롭해서 추가한다.

    figure do create property add
    단일 데이터 오브젝트 개발 (1)
  3. 'Create Message' 항목에서 원하는 타입의 메시지를 체크한다.

    figure do create msg generate
    단일 데이터 오브젝트 개발 (2)
  4. 단축키 <Ctrl>+S 또는 툴바의 [Save] 버튼을 클릭하여 데이터 오브젝트를 저장한다.

2.4.2. Include 데이터 오브젝트

데이터 오브젝트를 생성할 때 기존에 만들어진 데이터 오브젝트를 포함하여 생성할 수 있다. 주로 다건(List) 데이터 오브젝트를 생성할 때 사용한다.

다음은 Include 데이터 오브젝트를 개발하는 방법에 대한 설명이다.

  1. 데이터 오브젝트 생성을 참고해서 데이터 오브젝트를 생성한다.

  2. 기존에 생성된 데이터 오브젝트를 오른쪽 MetaData View 화면[Property] 탭(Property 정보 갱신 - [DO] 탭)에서 검색한다. 추가할 항목을 선택한 후 에디터의 필드 영역에 드래그 앤드 드롭해서 추가한다.

    figure include do create do add
    Include 데이터 오브젝트 개발

    논리명, 물리명을 수정한다(논리명, 물리명 지정은 필수이다). Include DO는 자기 자신을 include할 수 없으며 다른 필드 타입과 마찬가지로 배열로 사용하려면 fixed된 배열 크기를 지정해야 된다.

  3. 'Create Message' 항목에서 메시지 타입을 체크한다. 생성된 메시지는 Package Explorer에서 [.msg] 파일로 확인할 수 있다.

  4. 단축키 <Ctrl>+S 또는 툴바의 [Save] 버튼을 클릭하여 데이터 오브젝트를 저장한다.

2.4.3. 부모 데이터 오브젝트

공통적으로 사용되는 필드들은 부모 데이터 오브젝트에 추가하고 이후 생성되는 데이터 오브젝트에 부모 데이터 오브젝트를 지정하면 공통 필드들을 따로 추가 없이 상속받아 사용할 수 있다.

다음은 부모 데이터 오브젝트(Super DO) 사용 방법에 대한 설명이다.

  1. 데이터 오브젝트 생성을 참고해서 데이터 오브젝트를 생성한다.

  2. 부모 데이터 오브젝트로부터 상속받을 데이터 오브젝트를 생성한다(데이터 오브젝트 생성 참고).

  3. 다음은 부모 데이터 오브젝트의 필드 화면이다.

    figure super do editor
    부모 데이터 오브젝트 개발 (1)
  4. [Search] 버튼을 클릭한 후 부모로 지정할 데이터 오브젝트를 찾아서 선택한 후 필수 필드로 구성한 데이터 오브젝트를 부모로 선언한다.

    figure super do parent add
    부모 데이터 오브젝트 개발 (2) - Super DO 지정 후
  5. 'Create Message' 항목에서 메시지 타입을 체크한다. 항목의 콤보박스를 클릭하면 다음과 같이 상세 메시지를 설정할 수 있다.

    figure do create msg generate combo
    Create Message - 상세 Message 설정 화면(Json 선택 시)
    • 검색 조건

      항목 설명

      Exclusive Null

      (Json Type)

      Value값이 Null일 경우 marshal하지 않는다.

      • true : Null일 경우 제외한다.

      • false : Null일 경우 Json Node를 추가한다.

      Array size check

      (Json Type)

      Array Size를 Check하는 옵션이다.

      Message Trim 세팅

      메시지를 Trim하는 옵션이다.

    • 설정 항목

      항목 설명

      배열크기

      Json type일 경우 가변적인 메시지를 처리하는 경우 DO 편집기'배열크기'에 ubound를 입력하여 설정 가능하다.

      Date Format

      Marshal할 때 기준이 되는 Date Format를 정의한다.

      해당 설정은 ProbuilderConfig.xml의 dateTypeFormatList Node에 다양한 Date Format을 설정할 수 있다.

      <dateTypeFormatList>yyyy.MM.dd HH.mm.ss,yyyy,MM, long</dateTypeFormatList>
  6. 단축키 <Ctrl>+S 또는 툴바의 [Save] 버튼을 클릭하여 데이터 오브젝트를 저장한다.

3. 데이터 오브젝트 팩토리(DB)

DB Type 데이터 오브젝트 팩토리(DataObjectFactory, DOF)는 데이터베이스에 접근하여 데이터를 조회하거나 조작하는데 사용하는 객체이다.

데이터베이스를 처리할 때 JDBC를 이용할 경우 사용자가 직접 구현해야 했던 여러 가지 반복적인 작업들을 대신해줌으로써 개발의 절차를 간소화한다. 또한 사용자가 직접 작성한 SQL 문을 미리 검증하거나 실행계획을 조회할 수 있는 기능을 제공한다.

본 절은 데이터 오브젝트 팩토리의 기본 개념과 시작하는 방법, 예제를 설명한다.

3.1. 환경설정

ProStudio 환경설정에서 JDBC 설정이 되어 있어야 한다. 자세한 내용은 사용 환경 확인을 참고한다.

3.2. 데이터 오브젝트 팩토리 생성

Package Explorer의 컨텍스트 메뉴에서 [New] > [DataObjectFactory]를 선택한 후 New Data Object Factory 화면에 데이터 오브젝트 팩토리 정보를 입력한다.

figure dof new wizard
New Data Object Factory 화면
항목 설명

프로젝트

생성할 데이터 오브젝트 팩토리가 위치할 실제 프로젝트명을 선택한다.

패키지

실제 사용하는 패키지 네이밍 규칙에 따라 패키지명을 정의한다.

Fix된 Nameing Rule Check기능을 제공하며, 자세한 내용은 Class Naming Rule Check를 참고한다.

이름

데이터 오브젝트 팩토리 객체의 논리명을 입력한다.

클래스

데이터 오브젝트 팩토리의 실제 생성되는 클래스 파일명을 입력한다.

Data Source

데이터소스 유형을 선택한다.

  • DB : SQL을 처리할 때 선택한다.

  • File : File을 읽고 쓸 수 있을 때 선택한다.

3.3. 데이터 오브젝트 팩토리 에디터

DB 데이터 오브젝트 팩토리 에디터는 기본 정보, Target DO 정보, 스키마 정보, 쿼리 영역으로 구성된다.

figure dof editor
DB 데이터 오브젝트 팩토리 에디터
  • 기본 사항

    항목명 설명

    이름

    Target DO는 쿼리의 결과 값을 받는다.

    설명

    해당 DOF 논리명 및 해당 리소스 설명이다.

    Trim String

    Do의 변수 Type이 String일 때 등록된 등록된 길이만큼만 설정한다.

    체크를 하는 경우 Time String 처리를 하고, 체크하지 않으면 Trime하지 않는다.

  • Target DO 정보

    데이터 오브젝트 팩토리 에디터는 하나의 데이터 오브젝트를 필수로 Target DO로 지정해야 된다. Target DO는 실행되는 쿼리의 타입에 따라 쿼리에 입력 또는 결과값을 담당하게 된다.

    쿼리 타입 설명

    SELECT

    Target DO는 쿼리의 결과 값을 받는다.

    UPDATE

    Target DO는 쿼리에서 SET 절에 들어가는 입력 값들을 가지고 있다.

    INSERT

    Target DO는 쿼리에서 INTO 절에 들어가는 입력 값들을 가지고 있다.

    DELETE

    Target DO는 사용되지 않는다.

  • 스키마 정보

    쿼리 영역에서 쿼리 작성 및 작성된 SQL 쿼리가 정상 동작하는지 정합성을 체크할 수 있다.

    다음의 쿼리 유형의 동작을 확인할 수 있다.

    설명

    [Condition]

    팩토리에 자신이 사용할 쿼리를 지정한다. (조건은 Separate에서 입력)

    [Separate]

    Condition의 조건절을 바꿔가면서 사용한다. (Base SQL은 Condition 유형)

    [Full]

    WHERE 절이 고정적인 CRUD 유형의 SQL 입력 유형이다. (데이터 오브젝트 팩토리 생성(Full) 참고)

    [Dynamic]

    업무 프로그램에서 입력되는 Sub SQL과 조합되어 수행되는 유형이다. (데이터 오브젝트 팩토리 생성(Dynamic) 참고)

3.4. 개발 방법

본 절에서는 데이터 오브젝트 팩토리 생성 및 사용법을 설명한다. 데이터 오브젝트 팩토리는 Full, Dynamic으로 나눠서 생성한다.

3.4.1. 데이터 오브젝트 팩토리 생성(Full)

다음은 데이터 오브젝트 팩토리 에디터 객체를 생성해서 쿼리를 입력하는 과정에 대한 설명이다.

  1. 데이터 오브젝트 팩토리 생성을 참고해서 데이터 오브젝트 팩토리를 생성한다.

  2. Target DO의 [선택..] 버튼을 클릭해서 Target DO를 지정한다. Include 데이터 오브젝트 및 부모 데이터 오브젝트는 Target DO로 지정될 수 없다.

    figure dof target do
    데이터 오브젝트 팩토리 생성 - Full (1)
  3. '대상 스키마' 항목의 [선택..] 버튼을 클릭해서 데이터소스 및 DB 스키마를 지정한다. 테이블과 컬럼 선택 화면에서 스키마 정보를 선택한 후 [OK] 버튼을 클릭한다.

    figure dof schema
    데이터 오브젝트 팩토리 생성 - Full (2)
  4. 필드 정보[Full] 탭을 선택한 후 컨텍스트 메뉴에서 [Insert New Row]를 선택해서 쿼리를 추가한다. 사용자는 다양한 타입의 여러 개의 쿼리를 추가할 수 있다.

    figure dof insert query
    데이터 오브젝트 팩토리 생성 - Full (3)

    Dynamic keyword는 파라미터 앞에 콜론(:)을 붙여서 표시한다(Where 절 및 set 절에 dynamic keyword가 들어갈 수 있다).

    figure dof dynamic binding
    데이터 오브젝트 팩토리 생성 - Full (4) - 쿼리 추가
  5. 데이터 오브젝트 팩토리 에디터를 저장한다.

3.4.2. 데이터 오브젝트 팩토리 생성(Dynamic)

다음은 데이터 오브젝트 팩토리 에디터 객체를 Dynamic으로 생성해서 쿼리를 입력하는 과정에 대한 설명이다.

  1. 데이터 오브젝트 팩토리 생성을 참고해서 데이터 오브젝트 팩토리를 생성한다.

  2. Target DO의 [선택..] 버튼을 클릭해서 Target DO를 지정한다. Include 데이터 오브젝트 및 부모 데이터 오브젝트는 Target DO로 지정될 수 없다.

    figure dyn dof 01
    데이터 오브젝트 팩토리 생성 - Dynamic (1)
  3. '대상 스키마' 항목의 [선택..] 버튼을 클릭해서 데이터소스 및 DB 스키마를 지정한다. 테이블과 컬럼 선택 화면에서 스키마 정보를 선택한 후 [OK] 버튼을 클릭한다.

    figure dyn dof 02
    데이터 오브젝트 팩토리 생성 - Dynamic (2)
  4. 필드 정보의 [Dynamic] 탭을 선택한 후 컨텍스트 메뉴에서 [Insert New Row]를 선택해서 쿼리를 추가한다.

    figure dyn dof 03
    데이터 오브젝트 팩토리 생성 - Dynamic (3)

    사용자는 다양한 타입의 여러 개의 쿼리를 추가할 수 있다.

    figure dyn dof 04
    데이터 오브젝트 팩토리 생성 - Dynamic (4)
  5. 데이터 오브젝트 팩토리 에디터를 저장하면 다음과 같이 생성된 소스를 조회할 수 있다.

    figure dyn dof 05
    데이터 오브젝트 팩토리 생성 - Dynamic (5) - SELECT
    figure dyn dof 06
    데이터 오브젝트 팩토리 생성 - Dynamic (6) - UPDATE

3.4.3. 데이터 오브젝트 팩토리 쿼리 테스트

다음은 작성한 쿼리를 DB 직접 적용해 보고 미리 검증하고 실행계획을 조회하는 방법이다.

  1. 쿼리 테이블에서 테스트할 쿼리를 선택한 후 [Test] 버튼을 클릭한다.

    figure dof query test select
    쿼리 선택
  2. Quey 실행 화면에서 Dynamic keyword에 테스트 값을 넣은 후 [실행] 버튼을 클릭하면 SQL 문의 정합성을 확인한 후 실제 DB에 SQL 문을 수행하여 실행 결과 값이 실행 결과 정보에 조회된다. SELECT SQL 문의 경우 결과 값을 보여주고 INSERT/UPDATE/DELETE SQL 문은 변형된 행 개수를 보여준다. DB에 적용된 내용은 커밋되지 않는다.

    figure dof query test dialog
    테스트 쿼리 화면
  3. [실행 계획] 버튼을 클릭하면 SQL 수행에 대한 Oracle/Tibero의 실행 계획(Execution plan)을 확인할 수 있다.

    figure dof query test explain plan
    쿼리 실행 계획

3.4.4. 데이터 오브젝트 팩토리 비포이미지 설정

다음은 데이터 오브젝트 팩토리 비포이미지 설정 방법이다.

  1. 비포이미지의 기본 정보(이름, 설명)을 설정한다.

  2. 'BeforeImage' 항목을 체크하고, 'BeforeImageSchema' 항목을 설정한다.

    figure dof before image dof01
    비포이미지 선택 및 비포이미지 스키마 설정

4. 데이터 오브젝트 팩토리(FILE)

File Type 데이터 오브젝트 팩토리(DataObjectFactory, DOF)는 Layout을 가지는 File을 생성하거나 읽을 때 사용하는 객체이다. Header, Body, Tail 영역이 구분되어 있으며, 지원하는 Message Type은 Delimiter, XML, FixedLength이다.

본 절에서는 File Type 데이터 오브젝트 팩토리의 기본 개념과 시작하는 방법, 예제를 설명한다.

4.1. 데이터 오브젝트 팩토리 생성

Package Explorer의 컨텍스트 메뉴에서 [New] > [DataObjectFactory]를 선택한 후 New Data Object Factory 화면에서 데이터 오브젝트 팩토리를 생성할 수 있다.

figure dof new wizard file
New Data Object Factory 화면
항목 설명

프로젝트

생성할 데이터 오브젝트 팩토리가 위치할 실제 프로젝트명을 선택한다.

패키지

실제 사용하는 패키지 네이밍 규칙에 따라 패키지명을 정의한다.

Fix된 Nameing Rule Check기능을 제공하며, 자세한 내용은 Class Naming Rule Check를 참고한다.

이름

데이터 오브젝트 팩토리 객체의 논리명을 입력한다.

클래스

데이터 오브젝트 팩토리의 실제 생성되는 클래스 파일명을 입력한다.

Data Source

데이터소스 유형을 선택한다.

  • DB : SQL을 처리할 때 선택한다.

  • File : File을 읽고 쓸 수 있을 때 선택한다.

4.2. 데이터 오브젝트 팩토리 에디터

File 데이터 오브젝트 팩토리 에디터는 File을 Read/Write할 대상의 Header(DOF 유형), Body(DO 유형), Tail(DOF 유형) 및 Message Type 등을 설정하여 SO/BO에서 File IO를 처리할 수 있다.

figure dof editor file
File 데이터 오브젝트 팩토리 에디터
  • 기본 사항

    항목명 설명

    이름

    FileDO Class 이름이다.

    설명

    해당 DOF 논리명 및 해당 리소스 설명이다.

    Header

    File의 Head, Body, Tail 중 Header를 나타낸다. Header에는 DOF를 설정한다.

    Tail

    File의 Head, Body, Tail 중 Tail을 나타낸다. Tail에는 DOF를 설정한다.

    레코드 형태

    Marshal/Unmarshal할 대상이 되는 Message Type을 나타낸다. (Delimiter, XML, FixedLength Type)

    구분자

    '레코드 형태' 항목이 'Delimiter’인 경우 Message 내의 구분자이고, '레코드 형태' 항목이 'FixedLength’인 경우 'Binary Type 여부’이다.

  • Target DO

    File의 Head, Body, Tail 중 Body에 해당하는 DO 이름을 표시하며 목록에 Layout이 조회된다.

4.3. 개발 방법

본 절에서는 데이터 오브젝트 팩토리 File 유형의 생성 방법을 설명한다.

4.3.1. 데이터 오브젝트 팩토리 생성

다음은 File 유형의 데이터 오브젝트 팩토리를 생성하는 과정에 대한 설명이다.

  1. Header/Body를 생성한다. 이후 설명할 DOF 생성 방법과 동일 하지만 Header, Tail이 비어 놓는 부분이 차이점이다. Read/Write할 파일의 Layout이 Header, Body가 있을 경우에만 생성한다.

    figure dof editor file header
    데이터 오브젝트 팩토리 에디터 - FILE (1)
  2. 데이터 오브젝트 팩토리 생성을 참고해서 데이터 오브젝트 팩토리를 생성한다. File DOF 생성을 위해서는 'Data Source' 항목을 'File’로 선택한다.

    figure dof editor file create
    데이터 오브젝트 팩토리 에디터 - FILE (2)
  3. File의 Body가 되는 Target DO를 선택한다. [선택] 버튼을 클릭하면 DO 내역을 조회/선택할 수 있다.

    figure dof editor file hd
    데이터 오브젝트 팩토리 에디터 - FILE (3)
  4. Read/Write할 File에 Header/Tail이 있을 경우 각 항목의 [Search] 버튼을 클릭하여 해당 DOF를 선택한다. 선택할 Type은 DOF Type의 File Type이어야 한다.

    figure dof editor file tail
    데이터 오브젝트 팩토리 에디터 - FILE (4)

5. 쿼리 오브젝트

쿼리 오브젝트(Query Object, QO)는 데이터베이스에 접근하여 데이터를 조회하거나 조작하는데 사용하는 객체이다. DOF와의 차이는 각 SQL별 DO 매핑, 데이터소스를 DB만 적용할 수 있다. QO는 enum 형태의 Source Gen이다. 따라서 데이터 오브젝트의 멤버변수로 다른 데이터 오브젝트를 포함하는 경우는 허용하지 않으므로 주의한다.

본 절은 데이터 쿼리 오브젝트 기본 개념과 시작하는 방법, 예제를 설명한다.

5.1. 환경설정

ProStudio의 환경설정에서 JDBC 설정되어 있어야 한다. 자세한 내용은 사용 환경 확인을 참고한다.

5.2. 쿼리 오브젝트 생성

Package Explorer의 컨텍스트 메뉴에서 [New] > [QueryObject]를 선택한 후 New Query Object 화면에서 쿼리 오브젝트를 생성한다.

figure qo new wizard
New Query Object 화면
항목 설명

프로젝트

생성할 쿼리 오브젝트가 위치할 실제 프로젝트명을 선택한다.

패키지

실제 사용하는 패키지 네이밍 규칙에 따라 패키지명을 정의한다. Fix된 Naming Rule Check 기능을 제공하며, 자세한 내용은 Class Naming Rule Check를 참고한다.

이름

쿼리 오브젝트 객체의 논리명을 입력한다.

클래스

퀴리 오브젝트의 실제 생성되는 클래스 파일명을 입력한다.

5.3. 쿼리 오브젝트 에디터

쿼리 오브젝트 에디터는 기본 정보, 쿼리 정보 영역으로 구성된다.

figure qo editor
쿼리 오브젝트 에디터
  • 기본 정보

    해당 QO 논리명 및 해당 리소스의 설명을 나타낸다.

  • 쿼리정보

    쿼리 오브젝트 에디터는 각각의 쿼리에 대해 Allias, TargetDO, Query가 필수로 설정되어야 한다. 쿼리 타입은 TargetDO 지정을 각각 할 수 있다.

    항목 설명

    Alias

    QO의 Caller(SO, BO등)에서 사용할 QO의 Alias를 넣는다.

    TargetDO

    각각의 Row(SQL)에 대해 필수로 Target DO를 지정해야 한다. Target DO는 실행되는 퀴리타입에 따라 쿼리 입력 또는 결과값을 담당한다.

    다음은 쿼리 타입별 DO 매핑정보이다.

    • SELECT : Target DO는 쿼리의 결과 값을 받는다.

    • UPDATE : Target DO는 쿼리에서 SET 절에 들어가는 입력 값들을 갖는다.

    • INSERT : Target DO는 쿼리에서 INTO 절에 들어가는 입력 값들을 갖는다.

    • DELETE : Target DO는 사용되지 않는다.

    Query

    등록할 쿼리를 입력한다.

5.4. 개발 방법

본 절에서는 쿼리 오브젝트 생성 및 사용법을 설명한다.

5.4.1. 쿼리 오브젝트 생성

다음은 쿼리 오브젝트 에디터 객체를 생성해서 쿼리를 입력하는 과정에 대한 설명이다.

  1. 쿼리 오브젝트 생성을 참고해서 쿼리 오브젝트를 생성한다.

  2. 컨텍스트 메뉴에서 [Insert New Row]를 선택해서 Alias 및 Query를 추가한다. 사용자는 다양한 타입의 여러 개의 쿼리를 추가할 수 있다.

    figure qo insert query
    쿼리 오브젝트 생성(1)

    파라미터 앞에 콜론(:)을 붙여서 표시한다(Where 절 및 set 절에 dynamic keyword가 들어갈 수 있다).

    figure qo dynamic binding
    쿼리 오브젝트 생성 (2) - 쿼리 추가
  3. Target DO를 지정할 Row에 Focus를 두고 [Target DO 선택] 버튼을 클릭해서 Target DO를 지정한다. Include 데이터 오브젝트 및 부모 데이터 오브젝트는 Target DO로 지정될 수 없다.

    figure qo target do
    쿼리 오브젝트 생성 (3)
  4. 쿼리 오브젝트 에디터를 저장한다.

5.4.2. 쿼리 및 데이터 오브젝트 생성

다음은 선택된 테이블 및 컬럼 정보로부터 쿼리 및 데이터 오브젝트를 생성하는 기능에 대한 설명이다.

  1. 쿼리 오브젝트 에디터에서 [선택] 버튼을 클릭하면 테이블 및 컬럼을 선택할 수 있는 다이얼로그가 나타난다.

    쿼리를 생성할 테이블을 선택하고, 생성 타입에서 쿼리 타입을 선택한다. 컬럼 목록에서 사용할 컬럼들을 선택한 후에 [Next] 버튼을 클릭한다.

    figure qo generate query dataobject1
    쿼리 생성 다이얼로그
  2. 선택된 컬럼들을 필드로 가지는 데이터 오브젝트를 생성하기 위한 정보를 입력한다.

    figure qo generate query dataobject2
    데이터 오브젝트 생성 다이얼로그
  3. [FInish] 버튼을 클릭하면 다음과 같이 쿼리들과 데이터 오브젝트가 생성된다.

    figure qo generate query dataobject3
    쿼리 오브젝트에 생성된 쿼리들
    figure qo generate query dataobject4
    생성된 데이터 오브젝트

5.4.3. 쿼리 생성

다음은 target DO가 선택된 상태에서 쿼리를 생성하는 방법을 소개한다.

  1. 에디터에서 target DO가 선택된 행을 선택하고 [쿼리 생성] 버튼을 클릭한다.

    figure qo generate query1
    쿼리 생성 기능
  2. 테이블 및 컬럼들을 선택하고 [OK] 버튼을 클릭한다.

    figure qo generate query2
    쿼리 생성 다이얼로그
  3. 선택된 CRUD 타입들의 쿼리들이 생성된다.

    figure qo generate query4
    쿼리 생성 기능으로 생성된 쿼리들