backend/iBatis

[iBATIS] 6. iBATIS + Spring

버리야 2008. 9. 1. 19:57
반응형

6. iBATIS + Spring

SqlMapClientFactoryBean

(org.springframework.orm.ibatis.SqlMapClientFactoryBean)

SqlMapClientTemplate

(org.springframework.orm.ibatis.SqlMapClientTemplate)

SqlMapClientDaoSupport

(org.springframework.orm.ibatis.support.SqlMapClientDaoSupport)

 

스프링의 iBATIS 연동지원
 

iBATIS 에서 데이터베이스 연동을 처리할 사용되는 SqlMapClient 역시 JDBC 프로그램을 때와 마찬가지로 try-catch 블록을 사용해서 예외를 처리해 주어야 한다 .
또한 에러원인에 따라 알맞은 예외를 발생시키기보다는 SQLException 발생하고 있다 .

스프링은 SqlMapClient 사용할 발생하는 코드 중복을 없애고 SQLException 스프링이 제공하는 예외 클래스로 변환해 주는 SqlMapClientTempalte 클래스를 제공하고 있다 .

1. SqlMapClient 위한 스프링 설정

스프링이 제공하는 SqlMapClientTemplate 클래스는 내부적으로 iBATIS SqlMapClient 사용한다 .
스프링은 SqlMapClient 스프링 설정 파일에서 쉽게 설정할 있도록 돕는 SqlMapClientFactoryBean 클래스를 제공하고 있다 .
클래스를 사용하면 SqlMapClient 스프링 빈으로 설정할 있다 .
dataSource
프로퍼티에는 DataSource 전달하며 , configLocation 프로퍼티는 iBATIS 설정 파일을 명시

2. SqlMapClientTemplate 이용한 DAO 구현

SqlMapClient 위한 빈을 설정했다면 SqlMapClientTemplate 이용해서 iBATIS 연동할 있다 .
SqlMapClientTemplate
클래스는 iBATIS SqlMapClient 클래스가 제공하는 대부분의 메소드와 동일한 이름과 파라미터 타입 , 리턴 타입을 갖는 메소드를 정의하고 있다.
차이점이
있다면 SQLException 발생하는 대신 스프링이 제공하는 예외를 발생한다 .

iBATIS SqlMapExecutor 직접 사용하고 싶다면 , SqlMapClientCallback 인터페이스의 구현 객체를 전달받는 execute() 메소드를 사용하면 된다 .

SqlMapClientCallback 구현 객체의 doInSqlMapClient() 메소드에 SqlMapExecutor 파라미터가 전달되므로 , 직접 SqlMapExecutor 사용해서 데이터베이스 연동을 구현할 있다 .
 

3. SqlMapClientDaoSupport 클래스를 이용한 DAO 구현

스프링은 SqlMapClientTemplate 클래스를 DAO 클래스에서 쉽게 사용할 있도록 하기 위해 SqlMapClientDaoSupport 클래스를 제공한다 .

클래스를 상속받은 클래스는 sqlMapClientTemplate 프로퍼티를 통해서 SqlMapClientTemplate 전달받는다 .



반응형