IBM®
메인 컨텐츠로 가기
    Korea [국가변경]    이용약관
 
 
   
        제품    서비스 & 솔루션    고객지원 & 다운로드    회원 서비스    
메인 컨텐츠로 가기

한국 developerWorks  >  Information Management | 자바  >

새로운 IBM pureQuery 툴을 사용하여 자바 데이터베이스 개발의 생산성 높이기, Part 2: 자바 프로그램의 SQL 문제 탐지 및 수정하기 (한글)

10개의 시나리오, 10배의 생산성 향상

developerWorks
문서 옵션

JavaScript가 필요한 문서 옵션은 디스플레이되지 않습니다.

영어원문

영어원문


제안 및 의견
피드백

Sonali Surange, pureQuery Tools Lead, IBM 
Becky Nin, Advisory Software Engineer, IBM

2008 년 2 월 04 일

IBM® pureQuery 기술과 툴을 사용하여, 자바 프로그램 내에서 SQL을 코딩 할 때 생기는 다양한 문제들을 탐지합니다. 제품 개발과 전개 사이클 동안 다양한 시나리오에서 데이터베이스 애플리케이션의 개발 생산성을 높이고, SQL 밸리데이션을 여러분의 필요에 맞게 개인화 합니다.

머리말

IBM pureQuery 기술과 툴은 SQL을 포함하고 있는 자바 애플리케이션을 개발하는 태스크를 매우 단순화 시킨다. pureQuery는 Eclipse 환경 안에서 자바와 SQL을 긴밀히 통합시킨다. pureQuery 툴은 SQL 밸리데이션, SQL 콘텐트 어시스트, SQL 실행, Database Explorer에 보기 테이블 및 컬럼, SQL 템플릿 같은 다양한 기능을 사용하여 자바 에디터에서 SQL 작업을 완벽하게 할 수 있도록 한다.

소셜 북마크

mar.gar.in mar.gar.in
digg Digg
del.icio.us del.icio.us
Slashdot Slashdot

본 시리즈의 Part 1에는 pureQuery 툴의 개요가 설명되어 있다.

이 글은 자바 내에서 SQL 밸리데이션에 초점을 맞춘다.

또한, 이 글을 pureQuery 툴의 다음과 같은 기능을 활용한다:

  • 인라인 스타일의 pureQuery 코드를 생성
  • 무효 쿼리를 픽스하는 SQL 콘텐트 어시스트
  • 테이블을 만드는 DDL 생성

이 글은 또한 다음의 IBM DB2® Developer Workbench 툴을 사용한다:

  • Alter table
  • Database Explorer
  • Data connection persistence options
  • SQL / XQuery Editor

플랫폼 지원

IBM 데이터베이스 - IBM DB2® for Linux®, UNIX® and Windows®, zSeries®, and iSeries®, as well as IBM Informix® Dynamic Server

Eclipse 환경

  • Developer Workbench 9.5 오픈 베타
  • IBM Rational® 제품 수트와 공유하는 향후 쉘 지원

전제 조건

DB2 SAMPLE 데이터베이스




위로


IBM pureQuery

pureQuery는 새로운 고성능 자바 데이터 액세스 플랫폼으로서, 데이터에 액세스 하는 애플리케이션을 개발 및 관리하는 태스크를 단순화 하는데 초점을 맞추고 있다.

pureQuery를 사용할 때의 효과는 애플리케이션 라이프 사이클의 개발, 전개, 관리, 거버넌스 단계로 확장된다.

pureQuery는 툴, API, 런타임 환경에서, 데이터베이스에 있는 데이터와 인메모리 자바 객체로의 액세스를 제공한다.




위로


IBM pureQuery Eclipse Tools

IBM Viper Developer V9.5의 pureQuery Eclipse 기반 툴을 사용하여:

  • 자바 에디터에서 자바와 SQL로 코딩하고, 두 언어 모두에서 동등한 생산성을 경험할 수 있다.
  • 자바 에디터에서 에러가 없는 자바와 SQL을 구현할 수 있다.
  • JDBC 보다 훨씬 적은 코드로 간단한 데이터 액세스 레이어를 자동 생성할 수 있다.
  • 정적인 SQL과 별도의 추가 작업 없이 애플리케이션 성능을 쉽게 높일 수 있다.
  • SQL을 사용하여 데이터베이스와 인-메모리 컬렉션에 액세스 할 수 있다.



위로


자바 언어에서 pureQuery SQL 밸리데이션을 사용하는 이유

오늘날, Eclipse의 자바 개발 환경은 SQL 문을 데이터베이스 애플리케이션으로 코딩 해야 하는 개발자를 지원한다. 자바 코드를 작성하는 것은 SQL 코드를 작성하는 것 보다 훨씬 더 낫다.

자바 에디터는 에러를 보고하고, 타이핑 할 때 자바 신택스의 오류를 찾아낸다.


그림 1. 문제가 생긴 위치를 알려주는 마커
문제가 생긴 위치를 알려주는 마커


문제된 부분 또는 문제 마커 부분에 커서를 대면 상세한 내역을 볼 수 있다. (그림 2):


그림 2. 문제가 된 자바의 위치를 알려주는 문제 마커
문제가 된 자바의 위치를 알려주는 문제 마커


이 문제들을 무시하고 코딩을 계속한다면, 파일을 저장하거나 프로젝트를 구현할 때, 프로젝트가 자동으로 구현이 설정되었는지 여부에 따라서 Problems 뷰는 문제를 리스팅 한다. Problems 뷰에서, 문제를 더블 클릭하여 자바 에디터에서 상응하는 코드를 볼 수 있다.


그림 3. 문제 리스트와 위치 검색
문제 리스트와 위치 검색


Eclipse의 자바 quick-fix 지원 또는 콘텐트 어시스트를 사용하여 문제를 픽스할 수 있다.

Eclipse에서 작업하는 자바 애플리케이션 개발자들은 오랫동안 이러한 통합을 통해 혜택을 누려왔고, 이러한 방식으로 자바 문제를 코딩하고 규명하는 일은 자연스러운 일이 되었다.

기존 솔루션의 단점

오늘날, SQL을 자바 애플리케이션에 코딩 하는 일은 쉽지가 않다. 자바 에디터는 SQL 신택스의 에러를 탐지할 수 없고, SQL 문이 존재하지 않는 데이터베이스 객체들을 참조한다고 말할 수도 없다. 사실, 애플리케이션 코딩이 완료되면, 애플리케이션이 실행되기 전까지는 SQL이 유효한지, 무효한지에 대한 어떤 지표도 없다. 이 단계에서, SQL을 실행하게 되면 실패하고, 프로그램은 오류의 원인을 결정할 수 있는 예외를 잡아낸다.

애플리케이션에서 SQL 문제를 찾을 때 사용할 수 있는 두 가지 방식이 있다:

  1. 코드에서 SQL 예외를 핸들하고, 애플리케이션을 실행하여 SQL이 유효한지 또는 무효한지를 파악한다. SQL 문에 에러가 있다면, 이를 픽스하고 여러 번 애플리케이션을 재실행 하여 추가적인 SQL 에러들을 잡아서 픽스한다.
  2. JDBC API prepare 문을 사용하여 SQL의 유효성을 확인한다. 이 솔루션의 단점은, SQL에서 첫 번째 문제만 확인할 수 있다는 점이다. 픽스를 반복하고 사이클을 재시도 하여 SQL을 정정한다.

이 두 가지 방식 모두 활성 데이터베이스 연결이 필요하다. 비록 데이터베이스 시스템은 애플리케이션 디자인 동안 사용할 수 없는 경우가 종종 있더라도 말이다. 더욱이, 원격 데이터베이스에만 액세스 할 수 있다면, 네트워크로의 느린 액세스 또는 중단 같은 문제가 생긴다.

Eclipse의 자바 에디터를 사용한 자바 개발 및 SQL 개발은 매우 다른 개발자 경험을 제공한다. 자바 개발은 매우 최적화 되고 생산적인 반면, SQL 코딩 경험은 매우 기본적이고, 생산적이지 못하다.

pureQuery 툴은 여러 SQL 편집 기능들을 Eclipse의 자바 에디터에 통합시킴으로써 위의 문제들을 해결한다.

pureQuery SQL 밸리데이션

pureQuery 툴은 자바 에디터로 직접 통합하고, 타이핑 할 때 SQL 문에 있는 문제에 대해 경고를 한다. 이 툴은:

  • 데이터베이스 스키마, 테이블, 컬럼, 기타 SQL에서 생긴 데이터베이스 생성물들의 에러를 탐지한다. 이 기능을 종종 시맨틱 밸리데이션(semantic validation)이라고 한다.
  • SQL 키워드와 SQL에서의 위치가 유효한지를 탐지한다. 이 기능을 신택스 밸리데이션(syntactic validation)이라고 한다.
  • SQL 문에서의 대부분의 에러를 규명한다. 이 기능은 생산성을 높이면서, 한번에 모든 SQL 문제들을 픽스할 수 있다. 예를 들어, 두 컬럼의 철자가 올바르지 않으면, pureQuery는 두 에러 모두를 탐지한다.

    주: 테이블의 철자가 틀리면, 컬럼 에러가 탐지되지 안는다. 스키마의 철자가 잘못되면, 테이블과 컬럼 에러가 탐지되지 않는다. SQL 신택스에 문제가 생기면, 시맨틱 에러가 탐지되지 않는다.
  • 두 장소에서 SQL 에러의 상세를 기술할 수 있다. 바로 코드와 Problems 뷰이다. 에러의 설명을 보려면, 코드의 에러 부분에 커서를 대거나, Problems 뷰에서 에러를 더블 클릭 한다. 에러를 진단하기 위해, SQL 코드에 공지하고 문제 해결 매뉴얼을 탐독할 필요가 없는 것이다.
  • 기호에 따라 코드에서 SQL 에러들을 강조한다.
  • 자바 스트링에서 여러 라인들로 확장하는 SQL 문의 에러를 탐지한다.
  • 연결이 해제된 채로 작업 할 수 있어서, 데이터베이스 연결에 대한 절약 모델이라고 할 수 있다.
  • Database Explorer에서 데이터베이스 객체들을 필터링 하여, 관심이 있는 객체들만 볼 수 있다.
  • 개발, 테스트, 생산 또는 다른 스키마 같은 다양한 데이터베이스 연결에 대해 자바 애플리케이션의 유효성 검사를 할 수 있다.
  • SQL 밸리데이션을 끌 수 있다.
  • SQL 에러를 경고로 간주할 수 있다.

다음 섹션의 단계들을 따라서, pureQuery 툴에서 이러한 기능들을 사용해 보자:




위로


pureQuery SQL 밸리데이션 실행하기

애플리케이션의 개발 또는 전개 단계 동안, pureQuery SQL 밸리데이션의 혜택을 누릴 수 있다. 각 단계마다, 모든 시나리오 마다 생산성을 높일 수 있다.

아래 시나리오는 pureQuery 밸리데이션과 SQL 편집 기능의 효과를 설명한 것이다:

애플리케이션 개발 생산성을 높일 수 있는 10개의 시나리오

  1. pureQuery 애플리케이션을 구현하고, SQL을 생성 또는 커스터마이징 하면서 데이터베이스 스키마, 테이블, 컬럼에서 에러를 탐지하고 싶은가?
    시맨틱 밸리데이션을 위해 타이핑 하면서 SQL을 탐지하고 픽스한다.
    • pureQuery 애플리케이션을 구현하고, 이 시나리오에서 SQL 밸리데이션 기능을 사용한다. pureQuery SQL 콘텐트 어시스트를 사용하여 문제를 픽스한다.

  2. SQL을 생성 또는 커스터마이징 하면서, SQL 키워드의 에러를 탐지하고 싶은가?
    시맨틱 밸리데이션을 위해 타이핑 하면서 SQL을 탐지하고 픽스한다.

  3. 개발에서 테스트 또는 실행 데이터베이스 및 스키마로 전환하고, 즉각적인 SQL 밸리데이션을 지속하고 싶은가?
    SQL 밸리데이션을 위해 데이터베이스를 전환한다.
    • pureQuery Generate DDL 기능을 사용하여 pureQuery 빈에서 테이블을 생성하는 스크립트를 얻는다. 새로운 SQL/XQuery 에디터를 사용하여 생성된 SQL을 실행한다.

  4. 데이터베이스 스키마가 구현되는 동안 pureQuery 애플리케이션에서 SQL 에러를 무시하고 싶은가?
    SQL 밸리데이션의 엄정성을 커스터마이징 한다.

  5. 테이블 또는 컬럼의 이름을 바꾸고, 자바 애플리케이션에 적용시켜 즉각적인 SQL 밸리데이션을 수행하고 싶은가?
    자바 애플리케이션에서 데이터베이스 변경에서 오는 영향을 탐지한다.
    • Database Explorer에서 alter table 기능을 사용한다.

  6. 데이터베이스 서버를 다시 사용할 수 있을 때까지 에러가 없는 SQL 개발을 중지하고 싶지 않은가? 다른 팀 멤버들에 의해 생긴 데이터베이스 변경 사항에 영향을 받고 싶지 않은가?
    자바 애플리케이션에서 연결을 해제하고, 생산성 있는 에러 없는 SQL 개발을 수행한다.

  7. IDE를 열 때마다 자동 SQL 밸리데이션을 수행하고, 활성 연결을 통해 작업할 때 패스워드를 다시 입력하고 싶지 않은가?
    Database Explorer에 패스워드를 저장한다.
  8. 애플리케이션에 리포트 포맷으로 된 SQL 에러를 보고 싶은가?
    Use the scenario to SQL 문제 리포트를 생성한다.

  9. 자바 프로그래밍과 SQL 에러에 대한 기본적인 에러 디스플레이 옵션을 원하지 않는가?
    에러 디스플레이 옵션을 커스터마이징 한다.

  10. pureQuery SQL 밸리데이션을 좋아하고, 이것을 기존의 모든 프로그램에 사용하고 싶은가?
    pureQuery SQL 밸리데이션을 확장한다.

여러분은 먼저, 샘플 데이터베이스에서 pureQuery 툴을 사용하여 pureQuery 애플리케이션을 생성해야 한다:

Setup - pureQuery 코드 생성하기

아래 단계를 따른다:

  1. 자바 퍼스펙티브를 연다. Database Explorer 뷰를 자바 퍼스펙티브에 추가한다. -- navigate to Window > Show View로 가서, Data를 선택하고, Database Explorer를 더블 클릭한다.
  2. Database Explorer에 있는 SAMPLE 데이터베이스로 연결한다.
  3. 자바 프로젝트를 만든다.
  4. 이것을 pureQuerySQLPrj로 명명한다.

    그림 4. 자바 프로젝트 생성하기
    자바 프로젝트 생성하기

  5. Database Explorer에서, PROJECT 테이블을 오른쪽 클릭하고, Generate pureQuery code를 선택한다.
  6. 체크 박스들에 체크가 되어 있는지 확인한다:

    그림 5. pureQuery 코드 생성하기


  7. Finish를 선택한다.

pureQuerySQLPrj에는 이제 다음과 같은 파일들이 포함된다:

  • Project.java - PROJECT 테이블을 나타내는 빈
  • ProjectInlineSample.java - create, select, update, delete 문에 대한 제안을 갖고 있는 인라인-메소드 스타일 프로그램

이 글에서는 ProjectInlineSample.java에서 생성된 SQL로 작업한다.

본 시리즈의 다음 글에서는, pureQuery에 의해 지원을 받는 메소드-스타일 애플리케이션 개발을 사용할 것이다.

  1. 에디터에서 ProjectInlineSample.java를 연다.

    프로그램이 create, select, update, delete 문을 사용하는 pureQuery의 API를 포함하고 있는지를 관찰한다.

    또한, 이 프로그램의 모든 SQL이 옅은 노란색 박스로 강조되고 있는지를 관찰한다. pureQuery의 SQL 주석 기능으로 자바 프로그램에서 SQL을 구별할 수 있다. 이 글 나머지 부분에서는 강조된 SQL로 작업하게 될 것이다.

  2. 여러분의 프로젝트에 이제 pureQuery 지원이 되는지를 확인한다:
    1. pureQuerySQLPrj를 오른쪽 클릭하고, Properties를 선택한다.
    2. pureQuery를 선택한다. SAMPLE 연결이 프로젝트와 연결되었는지를 관찰한다.
    3. Current schema 설정을 선택하고, 연결되어 있는 userID가 현재 스키마 설정에 사용되는지를 확인한다.

이 연결은 pureQuery 툴에 의해 사용되어 프로젝트에 있는 자바 파일에 SQL 밸리데이션을 제공한다.

시맨틱 밸리데이션을 위해 타이핑 하면서 탐지 및 픽스한다.

pureQuery의 SQL 밸리데이션 기능을 설명하기 위해, 생성된 SQL을 변경해 보자.

  1. 생성되었던 첫 번째 선택 문에서, 두 컬럼의 이름들을 무효 값으로 바꾼다. (이 예제는 PROJNAME과 PRENDATE를 무효 값으로 바꾼다.)

    자바 언어 에러 공지(기본은 빨간색 선이다.)이 틀린 컬럼 이름 밑에 보인다.

  2. 파일을 저장하고, 에디터에서 문제 공지를 확인한다. (기본은 빨간색 십자가이다.)
  3. Problems 페인을 연다. -- Window > Show View > Problems로 간다.

    자바 프로그램의 모든 무효 컬럼 이름들이 다른 자바 언어 에러와 함께 리스팅 된다.

    그림 6. 여러 컬럼들의 에러가 디스플레이 된다.
    여러 컬럼들의 에러가 디스플레이 된다.


  4. 컬럼 이름을 픽스하려면, pureQuery의 콘텐트 어시스트 기능을 사용한다:
    1. 컬럼 이름 앞에 커서를 대고, Ctrl + Space (또는 콘텐트 어시스트 용 기본 키스트로크)를 눌러 콘텐트 어시스트를 활성화 한다.
      PROJECT 테이블에 대한 컬럼 리스트가 디스플레이 된다. PROJNAMEPRSTDATE를 선택하여 컬럼 이름 에러를 픽스한다.


      그림 7. 컬럼 콘텐트 어시스트
      컬럼 콘텐트 어시스트


  5. 생성된 첫 번째 select 문에서, 테이블의 이름을 무효 값으로 바꾼다. (이 예제에서는 PROJECT 테이블을 PROJECT1로 바꾼다.)

    자바 언어 에러 공지(기본은 빨간색 곡선이다.)가 틀린 SQL 밑에 보인다. 이 경우, 테이블 이름은 PROJECT1이다.
  6. 파일을 저장하고, 에디터에 문제 공지를 확인한다. (기본은 빨간색 십자가이다.)
  7. Window > Show View > Problems로 가서 Problems 페인을 연다.

    무효 테이블 이름이 자바 프로그램의 다른 자바 에러와 함께 리스팅 된다:

    그림 8. 테이블 에러



  8. 테이블 이름을 픽스하려면, pureQuery의 콘텐트 어시스트 기능을 사용한다.
    1. 테이블 이름 앞에 커서를 두고, Ctrl + Space (또는 콘텐트 어시스트용 기본 키스트로크)를 눌러 콘텐트 어시스트를 활성화 한다.

      스키마용 테이블 리스트가 디스플레이 된다. PROJECT를 선택하여 테이블 이름을 픽스한다.

      그림 9. 테이블 콘텐트 어시스트



  9. 스키마 이름을 무효 값으로 수정하고, 위와 비슷한 에러를 조사한다. 콘텐트 어시스트를 사용하여 스키마 이름을 픽스한다.


우리가 얻은 것:

모든 컬럼 에러 같이, 한 번에 SQL에 있는 모든 에러에 플래그를 다는 pureQuery의 고유 기능에 대해 알았다. 이러한 고유한 기능은 JDBC의 미리 준비된 문을 사용하는 것 같이, SQL의 에러들을 규명하는 메커니즘과 비교될 수 있다.

또한, pureQuery는 여러 라인들로 확장되는 에러들을 고립시켜서, 다른 자바 에러와 마찬가지로 에러 마커를 보여준다.

신택스 밸리데이션을 위해 타이핑 하면서 SQL을 탐지하고 픽스한다.

  1. SQL에서 생성된 업데이트 문들 중 하나에 업데이트 키워드를 바꾼다.

    위와 같이 테이블 이름 변경의 경우와 같은 작동이 보인다.

  2. 특정 SQL 키워드를 픽스할 수 있다. 자바 에디터 quick fix를 사용하여 업데이트 키워드를 픽스한다.
    1. 콘텐트 어시스트를 사용하여 SQL 키워드를 픽스한다. (그림 10):

      그림 10. 업데이트 에러와 콘텐트 어시스트


주: pureQuery 툴의 향후 릴리스에서는 SQL 내에서 pureQuery 호스트-변수 밸리데이션을 제공한다.

우리가 얻은 것:

SQL 문에서 신택스 에러를 탐지하고 픽스하는 기능을 배웠다.

SQL 밸리데이션을 위해 데이터베이스를 전환하기

일반적으로, 애플리케이션은 개발 데이터베이스에서 개발되고, 다른 데이터베이스에서 테스트 되고, 마지막으로, 또 다른 데이터베이스에 전개된다. 각 데이터베이스에 대한 스키마 이름은 다르다. 이러한 시나리오에서, pureQuery 프로젝트를 위해 데이터베이스를 전환하고, 코드를 바꾸지 않고 SQL의 유효성 검사를 수행할 수 있다.

  1. DB2 서버에 테스트 데이터베이스를 만들고, 이것을 TESTDB라고 명명한다:
    1. 다음 SQL 문을 DB2 명령 프롬프트에서 실행한다:

      db2 create database prod
      

  2. Database Explorer에서 TESTDB 데이터베이스로 연결한다.
  3. 자바 프로젝트용 연결을 바꿔서 TESTDB를 가리킨다:
    1. pureQuerySQLPrj를 오른쪽 클릭하고, Properties를 선택한다.
    2. pureQuery를 선택하고, 연결 이름을 TESTDB로 바꾼다:

      그림 11. 자바 프로젝트를 위해 데이터베이스 바꾸기
      자바 프로젝트를 위해 데이터베이스 바꾸기


  4. TESTSCHEMA라는 스키마 이름 밑에 TESTDB 데이터베이스에 PROJECT 테이블을 만든다:
    1. Project.java빈을 연다.
    2. 빈을 오른쪽 클릭하고, pureQuery Assist 메뉴에서 Generate DDL을 선택한다.
    3. Window > Show View로 가서 Console을 선택하여 Console 뷰를 연다.
    4. 리스팅 된 DDL을 복사한다. (이것은 Project 빈이 나타내는 테이블을 생성하기 위한 제안이다.)

      그림 12. PRODSCHEMA 밑에 있는 PROD 데이터베이스에 PROJECT 테이블 생성하기
      PRODSCHEMA 밑에 있는 PROD 데이터베이스에 PROJECT 테이블 생성하기


  5. SQL/XQuery 에디터를 사용하여 DDL을 실행한다.
    1. Database Explorer의 TESTDB 연결 밑에 TESTDB 데이터베이스를 오른쪽 클릭하고, New SQL or XQuery Script를 선택하여 SQL/XQuery 에디터를 연다.
    2. ProjectDDL로 명명하고, SQL Editor용 버튼이 선택되었는지 확인한다.
    3. 콘솔 뷰에서 SQL 스크립트를 SQL/XQuery 에디터에 있는 ProjectDDL.sql에 복사한다.
    4. 스키마 이름을 바꾼다:

      Listing 1. DDL 실행하기
                                      
      CREATE TABLE TESTSCHEMA.PROJECT (
      DEPTNO VARCHAR(255) NOT NULL,
      MAJPROJ VARCHAR(255) NOT NULL,
      PRENDATE DATE NOT NULL,
      PROJNAME VARCHAR(255) NOT NULL,
      PROJNO VARCHAR(255) NOT NULL,
      PRSTAFF DECIMAL(9 , 2) NOT NULL,
      PRSTDATE DATE NOT NULL,
      RESPEMP VARCHAR(255) NOT NULL
      )
      DATA CAPTURE NONE ;
      
      ALTER TABLE TESTSCHEMA.PROJECT ADD CONSTRAINT PROJECTPK PRIMARY KEY (PROJNO);
      

    5. 에디터를 오른쪽 클릭하고, Run SQL을 선택한다. 성공적인 실행 결과를 본다.


      그림 13. SQL / XQuery 에디터를 사용하여 DDL 실행하기
      SQL / XQuery 에디터를 사용하여 DDL 실행하기

  6. Database Explorer에서 TESTDB 연결을 위한 스키마를 리프레시 한다.
  7. ProjectInlineSample.java를 다시 연다.

    자바 에디터는 원래의 스키마가 무효하다는 것을 자동으로 탐지한다.

    그림 14. 원래 스키마가 테스트 또는 실행 데이터베이스에서 더 이상 유효하지 않다는 것을 탐지하는 자바 프로그램
    원래 스키마가 테스트 또는 실행 데이터베이스에서 더 이상 유효하지 않다는 것을 탐지하는 자바 프로그램


  8. 콘텐트 어시스트를 사용하여 에러를 픽스한다.

스키마 이름의 변경으로 인한 코드 변경을 피하려면, 연결되어 있는 현재 스키마에 속한 ID에 자격을 주지 않을 수 있다. 자바 프로젝트에 대한 현재 스키마를 수정하여 올바른 스키마 이름을 사용하도록 한다:


그림 15. 자바 프로젝트 연결에 현재 스키마 설정하기
자바 프로젝트 연결에 현재 스키마 설정하기


우리가 얻은 것:

개발과 테스트 데이터베이스 사이를 전환하는 방법과, 데이터베이스에 SQL 밸리데이션을 수행하는 방법을 배웠다. 이것은 자바 프로젝트와 제휴된 데이터베이스를 전환함으로써 이루어진다.

또는, SQL에 스키마 자격을 주지 않고 애플리케이션을 구현하고, 스키마 이름이 변할 때 자바 프로젝트에 대한 현재 스키마를 수정한다.

SQL 밸리데이션 엄정성 커스터마이징.

pureQuery 툴은 자바 프로그램의 SQL 에러를 에러로서 간주할 때 유연하다. 경고로 표시하거나, 심지어는 무시하는 것도 허용한다. 데이터베이스 스키마가 연결되지 않거나, 개발 중일 경우, 이 같은 에러는 경고로서 취급되어야 한다.

SQL 밸리데이션 에러를 경고로서 취급하려면, SQL 문제에 대한 엄정성 레벨을 "Warnings"로 설정한다.

여러분이 SQL을 개발하고 있고, 데이터베이스 스키마가 아직 없다면, SQL 밸리데이션을 끌 수 있다. 밸리데이션을 끄려면, SQL 문제에 대한 엄정성 레벨을 "Ignore"로 선택한다.

특정 애플리케이션 개발 사이클 동안 밸리데이션을 하지 않으려면, 나중에 다시 전환할 수 있다.

선호도를 설정하려면:

  1. Window > Preferences > Data > pureQuery > Compiler Settings를 선택한다. (그림 16):

    그림 16. SQL 밸리데이션 엄정성을 Ignore로 설정하기
    SQL 밸리데이션 엄정성을 Ignore로 설정하기

    선호도를 바꾸면, 워크스페이스 리-빌드(re-build)가 실행된다. 특정 프로젝트를 재구현 할 수도 있다.

SQL 에러를 경고로 선택하면 자바 경고(노란색 곡선)와 같은 경고 공지, 경고 파일과 라인 마커(기본은 노란색 십자가이다.), Problems 뷰의 경고 섹션에 리스팅을 보여준다.

우리가 배운 것:

데이터베이스가 개발 중일 때 밸리데이션을 끄는 방법을 배웠다. SQL 에러를 warning으로 취급할 수도 있다.

자바 애플리케이션에서 데이터베이스 변경의 영향력 탐지하기

  1. TESTSCHEMA 밑에 TESTDB로 연결이 되어 있는 PROJECT 테이블을 선택하고 Alter를 선택한다.
  2. 두 컬럼 이름을 바꾸고(그림 17), Run DDL을 선택한다:

    그림 17. 컬럼 이름을 바꾸는 수정 테이블
    컬럼 이름을 바꾸는 수정 테이블


  3. ProjectInlineSample.java를 다시 열고, 컬럼 이름을 수정한 결과가 자바 프로그램에 반영되는지를 확인한다:

    그림 18. 자바 프로그램에 탐지된 데이터베이스에 있는 컬럼 이름의 모든 인스턴스
    자바 프로그램에 탐지된 데이터베이스에 있는 컬럼 이름의 모든 인스턴스

우리가 배운 것:

데이터베이스 변경 사항이 자바 애플리케이션에서 탐지되는 방법과, 애플리케이션 개발 시 이러한 변경 사항에 맞게 애플리케이션을 조정하는 방법을 배웠다.

주: 보다 완전한 영향력 분석은 향후 pureQuery 툴 릴리스에서 제공될 예정이다.

자바에서 연결이 해제된 생산성 있는 에러-프리 SQL 개발

온라인, 활성 연결, 또는 파일 시스템에 오프라인으로 저장된 연결을 통해 pureQuery SQL 밸리데이션을 사용할 수 있다.

연결이 오프라인으로 저장되면, pureQuery SQL 밸리데이션은 오프라인을 사용하게 되고, 밸리데이션을 위한 데이터베이스 메타데이터를 저장한다.

  1. SAMPLE 데이터베이스로 연결된 Database Explorer 연결을 오른쪽 클릭하고, Save offline을 선택한다.

    모든 SQL 밸리데이션은 이제 저장된 데이터베이스 스키마를 사용한다.

우리가 배운 것:

데이터베이스 애플리케이션을 디자인 하는 동안 다른 개발자와 환경이 다른 개발자와 공유되거나, 의존성이 있다면 데이터베이스 인스턴스에 생긴 변경 사항으로부터 개발 환경을 고립시킬 수 있다. 이는 애플리케이션 개발에 있어서 매우 큰 생산성 향상을 가져온다.

Database Explorer에 패스워드 저장하기

데이터 연결 상태가 SQL 밸리데이션에 미치는 영향:

  • Eclipse 실행 동안 연결을 위한 패스워드가 유지되기를 바랄 것이다. 패스워드가 영속된다면, 시작 시 자동 재연결 하도록 프레퍼런스를 설정할 수 있다.
  1. Window > Preferences > Data에서, 패스워드 정보 설정을 위해 Persistence Scope을 선택한다.
  2. 시작 시 자동으로 재 연결하는 박스를 체크한다.

주: 설정이 위와 같지 않을 경우, Eclipse 시작 시, SQL을 포함하고 있는 자바 파일은 무효 SQL에 대해 에러 마커를 보여주지 않는다. 마찬가지로, SQL은 자바 프로그램에서도 하이라이트 되지 않는다. 파일의 첫 번째 라인에 있는 경고는 이러한 작동의 이유를 규명한다:


그림 19. 연결이 연결 상태에 있지 않고, 저장된 오프라인에 있지 않을 때 생기는 경고
연결이 연결 상태에 있지 않고, 저장된 오프라인에 있지 않을 때 생기는 경고


우리가 배운 것:

IDE가 열릴 때마다 패스워드를 입력해야 하는 것을 피하는 패스워드 설정에 대해 배웠다.

SQL 문제 리포트 생성하기

모든 SQL 에러는 Problems 뷰에서 자바 에러와 함께 탐지 및 보고 된다. Problems 뷰를 커스터마이징 하여, 표준 Eclipse 기능을 사용하여, 에러나 경고만 리스팅 하도록 할 수 있다.


그림 20. Problems 뷰 커스터마이징
Problems 뷰 커스터마이징

Problems 페인에서 모든 에러를 선택하거나, 관심 있는 특정 에러만 선택함으로써, 에러를 복사하여 이것을 Eclipse 환경에 노출되는 리포트 파일에 붙일 수 있다.


Listing 2. 외부 에러 리포트
                
Severity and description    Path    Resource    Location    Creation Time    Id
Table "PROJECT" does not contain column "DETNO".    
pureQueryValidationPrj/src/com/demo
ProjectInlineSample.java
line   6728

Table "PROJECT" does not contain column "PRTAFF".
pureQueryValidationPrj/src/com/demo
ProjectInlineSample.java
line6729

자바 프로그램에 탐지된 SQL 에러는 다른 모든 자바 에러와 함께 유지된다. 커스텀 포맷으로 리포트를 만들려면, 유틸리티를 작성하여 관심 있는 프로젝트에 영속된 에러를 스캔하고, 관심 포맷에 커스텀 리포트를 채운다.

에러 디스플레이 옵션을 바꾸는 커스터마이징 옵션

Eclipse에서는, 기본적인 에러/경고 공지(에러에는 빨간색 곡선, 빨간색 마커, 경고에는 노란색 곡선과 노란색 경고)를 여러분이 선택한 공지로 바꿀 수 있다. SQL 에러를 나타내는데 선호도 설정이 사용된다.

자바와 SQL에 대한 에러 표시를 커스터마이징 하려면:

  1. Window > Preferences > General > Editors > Text Editors > Annotations로 가서, Errors를 선택한다.
  2. 다음의 선호도를 변경한다:
    • "Text as" 에서 "Highlighted"로
    • "Color" 에서light blue로


    그림 21. 에러 디스플레이 커스터마이징 하기



  3. 프로젝트를 재구현 한다.

모든 자바와 SQL 에러는 이제 파란색 하이라이트로 표시된다:


그림 22. 파란색 하이라이트로 표시되는 자바와 SQL 에러들
파란색 하이라이트로 표시되는 자바와 SQL 에러들


우리가 배운 것:

자바 에디터 선호도를 재사용 하는 pureQuery의 기능이 자바 프로그램에서 자바와 SQL에 일관된 룩앤필을 제공한다는 것을 배웠다.

pureQuery SQL 밸리데이션을 프로그램으로 확대하기

pureQuery의 SQL 통합은 Eclipse의 표준 자바 에디터에서도 사용할 수 있다.

기본적으로, SQL 편집 기능은 pureQuery API 내에서 사용되는 스트링에 대해 실행된다. 또한, 이것을 SQL을 포함하고 있는 애플리케이션에서 여러분이 선택한 스트링에 사용할 수 있다.

자바 애플리케이션에 이 기능을 사용하는 것에 대한 자세한 내용은 Part 1의 "SQL editor integration inside Java editor > Use pureQuery's editor integration in your program" 섹션을 참조하라.




위로


10배의 생산성 향상 이유

이 글에서는 pureQuery SQL 밸리데이션 기능에 대해 살펴보았고, 이것을 비 pureQuery 스트링과 API로 커스터마이징 및 확장하는 방법을 설명했다.

이제, 이러한 기능들이 어떻게 개발자에게 10 배의 생산성 향상을 가져오는지를 알아보자:

pureQuery 툴 없이 데이터베이스에서 자바 애플리케이션을 성공적으로 구현하려면:

  1. 자바로 SQL을 직접 코딩한다. SQL은 인풋 매개변수를 가질 수 있고, 결과 세트를 리턴할 수 있다.
  2. 애플리케이션을 직접 코딩 하여 SQL을 테스트 한다.
  3. 모든 매개변수 정보를 직접 코딩 하여 SQL에 인풋을 주고, 결과를 검색한다.
  4. try-catch를 직접 코딩하고, 예외를 디스플레이 한다.
  5. 애플리케이션을 실행한다.
  6. SQL이 무효할 경우, SQL 예외를 조사한다.
  7. 데이터베이스 매뉴얼을 탐독하고, 예외에서 보낸 에러 코드를 검색하여 오류 원인을 규명한다.
  8. 데이터베이스 벤더에서 SQL 에디터 또는 빌더를 열고, SQL을 수정한다.
  9. SQL을 다시 자바 프로그램에 붙인다.
  10. 성공할 때까지 5~8 단계를 반복한다.

주요한 단점은 이 테스트를 수행하기 위해 라이브 연결이 되어 있어야 한다는 점이다. 라이브 연결 없이는 SQL의 유효성을 테스트 할 수 없다. 매우 제한적이다.

pureQuery 없이는, 프로그램의 SQL 문에 있는 모든 에러를 동시에 찾을 수 없다.

pureQuery 툴을 사용하여, 자바 애플리케이션에 유효한 SQL을 구현할 수 있다. edit-debug-test 사이클을 한 단계로 줄여서 생산성을 높일 수 있다.




위로


요약과 미래 전망

pureQuery 툴은 DB2와 IDS 같은 IBM 데이터베이스에서 자바 데이터베이스 애플리케이션을 개발할 때 SQL 생산성을 매우 높인다.

Part 3에서는 다른 pureQuery 스타일을 사용한 pureQuery 애플리케이션 개발에 대해 설명할 것이다.

Part 4에서는 Informix 데이터베이스에서 pureQuery 애플리케이션 라이프 사이클에 초점을 맞춰 설명하겠다.




위로


감사의 말

통합 쿼리와 파서 기술에 대한 조언을 준 Brian Payton과 Roger Roles에 감사의 말을 전한다.

이 글을 검토해 준 Robert Heath와 Michael Hsing에게 특별한 감사의 말을 전한다.



참고자료

교육

제품 및 기술 얻기

토론


필자소개

Sonali Surange photo

Sonali Surange는 IBM 실리콘밸리 연구소(San Jose, California) 내 Data Server Tooling 부서에서 pureQuery 툴 팀을 이끌고 있다. IBM pureQuery 팀에 합류하기 전에, Visual Studio .Net을 담당했다. 그 이전에는 Informix SOA 솔루션을 주도했으며, Object Relational 매핑 툴 개발을 이끌었다.


Becky Nin은 IBM 실리콘밸리 연구소(San Jose, California)의 pureQuery 툴 팀 멤버이다. 이전에는, RAD의 SQLJ 지원 같은 Eclipse 기반 툴링을 개발했다. Eclipse 툴링 팀에 합류하기 전에, VisualAge for Java의 Data Access Beans 컴포넌트 개발을 이끌었다.




기사에 대한 평가


보다 나은 서비스를 제공하기 위함이오니 잠시 짬을 내어 이 양식을 제출하여 주십시오.



아니오잘 모르겠음
 


 


12345
 



위로


developerWorks 콘텐트를 다른 사이트에 전재하기:
developerWorks 콘텐트에 대한 저작권은 IBM에 있습니다. IBM의 서면 허가나 원본 저자의 허락이 없이는 전재를 금합니다. 저희 콘텐트를 전재하시려면 IBM developerWorks 담당자 에게 문의하십시오.
    IBM 소개 개인정보 보호정책 문의