2011년 5월 24일 화요일

iBATIS in Action (1/14)

1. iBATIS 탄생 철학

1.1. 복합적인 솔루션

iBATIS 어플리케이션에서 데이터베이스에 SQL 실행시키는 다양한 방법들로부터 다양한 개념을 빌려다 만든 독보적인 솔루션이다.

1.1.1. iBATIS 기원 답사

그림 11. iBATIS 개발 프로세스를 단순화하기 위해 끌어다 모은 몇몇 개념들

iBATIS 관계형 데이터 베이스에 접근하는 가장 알려진 방법들로부터 가장 좋은 특징과 아이디어들을 차용하고, 그것들로부터 시너지를 이끌어낸다.

데이터베이스와 소통하는 다양한 접근 방법들을 논의하고, iBATIS 응용한 부분들에 대하여 알아본다.

-SQL

가지 언어가 합쳐졌다고 볼수 있는데, 첫째로는 데이터 정의 언어(Data Definition Language, DDL) CREATE, DROP, ALTER 같은 구문을 포함하고 있다. 데이터 베이스의 구조와 설계를 정의하는데 사용된다.

째로는 데이터 조작 언어(Data Manipulation Language,DML)이다. 이것은 SELECT, INSERT, UPDATE, DELETE 같은 구문들을 포함하고 있다. DML 데이터를 직접 조작하기 위해 사용한다.

iBATIS 에서는 관계형 데이터베이스에 접근하는 1차적인 방법으로 SQL사용을 채택하였다.

-옛날식의 저장 프로시저(Stored Procedure)

관계형 데이터베이스로 애플리케이션 프로그램을 작성하는 가장 오래된 방법. 2-티어 설계라고 불리는 방식을 사용했다.성능과 확장성에는 문제가 있다.

-현대적인 저장 프로시저

중간 티어에서 호출되는 원격 프로시저처럼 사용되고 있다.성능에 관한 많은 제약들이 커넥션 풀이나 데이터베이스의 자원을 관리함으로써 해결되었다.

-인라인 SQL

일반 프로그래밍 언어에 SQL 내장시키는 방법이다.

폭넓게 받아들여지지는 못했다. 보통 실제 프로그래밍 언어의 일부로써 구현되지 못하는 점이 있다. 언어 측면에서 인라인 SQL 이러한 문제를 해결하는 한가지 방법은 애플리케이션에서 SQL 문자열 같은 자료구조로 나타내는 것이다. 이러한 접근 방법을 보통 동적 SQL 이라고 한다.

인라인SQL : 일반적인 소스 코드내에 SQL명령문을 삽입하는 방식이다.

-동적 SQL

전처리기를 사용하지 않고 인라인 SQL 다루는 방법이다.SQL 문자타입이므로 인라인 SQL처럼 직접 프로그래밍 언어의 특징을 사용할 수는 없다.

동적 SQL : 동적 SQL 예로 asp, php 등과 같은 서버 스크립트에서 SQL문을 만들 , 테이블 명이나 필드명을 변수 처리 해서 SQL 문을 유연하게 만든 것과 같다.

동적SQL Pre-Compiler 이용한 프로그램이나 Stored Procedure 내에서

SQL 자체가 동적으로 변하는 경우를 일컫는 말입니다.

Select 문장에서 조회되는 컬럼명이나 테이블, 조건절에서의 컬럼명등이

상황에 따라 변할 사용된다는 것이다.

-객체 관계 매핑

객체 관계 매핑(ORM) SQL 개발자의 책임 영역에서 완전히 제거함으로써 객체의 영구적인 저장을 단순화하도록 설계돼 있다. SQL 자동생성과 트랜잭션 관리기능이 있다.

객체관계 매핑 : SQL 개발자의 책임 영역에서 완전히 제거함으로써 객체의 영구적인 저장을 단순화하도록 설계되어 있다. 대신 SQL 자동 생성된다. 어떤 개발 도구들은 컴파일시에 SQL 정적으로 자동 생성하기도 하지만, 보통은 실행시 동적으로 자동 생성한다. SQL 애플리케이션의 클래스와 관계형 데이터베이스 테이블 간의 매핑을 기반으로 하여 생성된다. ORM API SQL 없앨 있을 뿐만 아니라 전형적인 SQL API보다 훨씬 단순하기도 하다.

1.1.2. iBATIS 장점 이해하기

iBATIS 이제껏 살펴본 방법론에서 장점들을 차용하여 만들어졌다.

그리고 iBATIS 외부 저장과 캡슐화라는 개념이 합쳐져서 iBATIS 이룩한 많은 가치와 고급 기능들을 제공한다.

-외부로 SQL

SQL 코드로부터 분리한다. iBATIS 핵심 장점은 SQL 쓰고자 하는 대로 그대로 쓰면 된다는 점이다.

-캡슐화된 SQL

저장 프로시저 안에 SQL 숨기는 것이다. 코드를 응집성있는 모듈로 조직하는 것뿐만 아니라 또한 세부적인 구현을 숨기고 호출하는 코드에게 인터페이스만을 노출시키는 모듈화의 형태이다. XML 사용한다.

댓글 없음:

댓글 쓰기