'FrameWork'에 해당되는 글 3건

  1. 2009.05.31 iBatis 설정을 알아보장~
  2. 2009.05.31 iBatis 왜 사용해야 하는가?
  3. 2009.05.28 iBatis 그리고 JDBC 어떻게 다른가?
아래의 그림은 iBatis의 핵심이란다.
그냥 이런거군 이라고 몰라도 그런갑다 하자 -ㅅ-;;

위의 그림에서 SqlMapConfig 파일은 최상단에 위치하여 전체 옵션을 설정하고 또한 각각의 SQL Map 파일들의 위치를 지정한다. 
그 다음으로 SQLMap은 application이 DB와 소통하기 위해 제공하는 입력 파라미터 값과 조합되는 매핑 구문을 정의한다.

자, 이 설정 파일을 좀더 자세히 알아보장~ 일단 iBatis in action 의 내용을 주력으로 정리한 것이다.

이 책은 잘 읽어본 사람이라면 아래는 볼 필요가 없을 것으로 생각된다.



1. SQL Maps 설정파일 (SQLMapConfig.xml)



2. <properties> 요소




3. <setting> 요소




4. <typeAlias> 요소





5. <transactionManager> 요소




6. <typeHandler> 요소





7. <sqlMap> 요소




'FrameWork > iBatis' 카테고리의 다른 글

iBatis 왜 사용해야 하는가?  (0) 2009.05.31
iBatis 그리고 JDBC 어떻게 다른가?  (0) 2009.05.28
Posted by madmeke
,
거의 모든 시스템이서 iBatis를 사용해야 하는 수많은 이유가 있다. 
iBatis와 같은 FrameWork는 application에 많은 구조적인 이점을 준다.
무슨 이점인지 알아보자.

이는 간단하게 이런것도 있군 하는 느낌으로 읽어 가면 좋을듯 하다. (물론 읽지 않아도 무방 -ㅅ-;;)

1. 간단함 
 

2. 생산성


3. 성능


4. 관심사의 분리


5. 작업의 분배

  
6. 이식성 : JAVA,  .NET 그리고 그외...


7. 오픈소스와 정직성



자 이제 어떻게 하는지 보여줘!
이럴수도 있겠군... 
뭔지를 알았으니 이제 한번 쓰기위한 준비단계를 알아볼까낭 

'FrameWork > iBatis' 카테고리의 다른 글

iBatis 설정을 알아보장~  (0) 2009.05.31
iBatis 그리고 JDBC 어떻게 다른가?  (0) 2009.05.28
Posted by madmeke
,

iBatis가 좋다는 말은 많이 한다. 


코드도 줄어든다고 한다.


재사용성도 높아진단다.



그런데 대강 이렇다고는 하는데 뭐가 달라지는 건지 진짜 좋아지는 건가 하는 생각을 했었다.


그래서 직관적인 코드를 통해서 변화와 좋은 점을 한번 알아보려고 한다.



위를 보자 왼쪽의 기존의 것을 SQL을 사용하여 매핑해서 오른쪽이 나왔다 


좀 나아 보이는가? 단지 이름을 ALIAS한 것뿐 이다 –ㅅ-.. 그래도 좀 나아 보이지 않는가? 


여기에서부터 시작해보자




SQL 매핑하기



모든 SQL 구문은 입력과 출력으로 이루어져 있다. 입력은 대게 SQL구문의 WHERE절에서 볼 수 있는 파라미터이다. 


출력은 SELECT 절에서 볼 수 있는 칼럼이다.


아래의 그림은 이러한 생각을 보여준다


 

이 접근법의 장점은 개발자가 SQL 구문을 매우 유연하게 다룰 수 있다는 점이다. 


개발자는 DB 테이블을 변경하지 않고도 데이터를 객체 모델과 일치하도록 조절할 수 있게 된다. 


게다가 개발자가 DB의 여러 테이블, 내장 함수, 저장 프로시저로부터 생성되는 결과 값을 가져 오는 것이 실직적으로 가능해진다.


즉, 개발자가 SQL의 능력을 모두 다 사용할 수 있게 되는 것이다.



 

iBtis는 간단한 XML 서술 파일을 사용하여 SQL구문의 입력과 출력을 매핑한다.


다음은 이를 간단하게 보여주는 것이다.

 


 

여기서 주소(address)데이터를 반환하는 SQL SELECT 구문을 볼 수 있다. <SELECT> 요소의 WHERE절에서 #id#로 표시된 


Integer 형 값이 파라미터로 설정됐다. 이 쿼리의 결과가 Address 클래스의 객체 인스턴스로 매핑됨을 알수 있다.

 

이를 자바 코드로 한번 표현해보자.


Address address = (Address) sqlMap.queryForObject("getAddress", new Integer(5));


물론 다른 상세한 옵션이 있지만 나중에 보기로 하고 직관적인 변화를 보기로 하자


무엇보다도 iBatis는 JDBC의 코드 작성을 대신하는 것이다(JAVA기준). 


JDBC의 API는 매우 강력하지만 장황하고 반복적인 성향이 있다.

아래는 JDBC의 예제이다.


public Employee getEmployee (int id) {

		Employee employee = null;

				String slq = "SELECT * FROM EMPLOYEE WHERE EMPLYEE_NUMBER = ?";

				Connection conn = null;
				PreparedStatement pstmt = null;
				ResultSet rs = null;

				  try {
					conn = dateSource.getConnection();
					pstmt = conn.prepareCall( sql );
					rs = pstmt.executeQuery();

						while( rs.next() ) {
							employee = new Employee();
							employee.setId( rs.getInt( "ID" ) );
							employee.setEmployeeNumber( rs.getInt( "EMPLOYEE_NUMBER" ) );
							employee.setFirstName( rs.getString( "FIRST_NAME" ) );
							employee.setLastName( rs.getString( "LAST_NAME" ) );
							employee.setTitle( rs.getString( "TITLE" ) );
						}
				} finally {

					try {

					if( rs != null ) rs.close();

					} finally {

						try {
							if ( pstmt != null ) pstmt.close();
						} finally {
							if ( conn != null ) conn.close();
						}
					}
				}
			return employee;
		}


코드의 모든 줄이 꼭 필요한 것이라서 더 이상 줄이기에는 힘들지만,  


JDBC 의 API에 의해 야기되는 불편함을 쉽게 알아 볼 수 있다.

쉽게 접근해보자면 유틸리티성의 메소드를 한번 보자

PreparedStatement 와  ResultSet과 같은 자원에 대해 close() 메소드를 호출해 주는것이다.


물론 iBatis도 거의 비슷하게 작동할 것이다.

즉 DB로부터 커넥션을 얻고, 파라미터를 설정하고, 쿼리구문을 실행하고 결과를 가져오고 나서 모든 자원을 닫는다.  


즉, JDBCD와 같은 순서를 따를꺼라는 말이다. 


하지만 우리가 작성해야 하는 코드의 양은 눈에 띄게 줄어든다.


다음은 바로 위의 JDBC와 완전히 같은 동작을 하기 위한 구문을 iBatis형식으로 작성한 것이다.

  




이는 위에서 봤던 단 한줄의 java코드만 있으면 된다.

 

Address address = (Address) sqlMap.queryForObject("getAddress", new Integer(5));

 


다른 것은 필요 없다. 이 코드는 구문을 실행하고 파라미터를 셋팅하며 실제 자바 객체로 결과를 가져온다. 


SQL은 xml파일을 통해 적절히 캡슐화 되고  코드의 외부로 분리된다. 


iBatis는 보이지 않는 곳에서 모든 자원을 관리하면서 위의 JDBC 코드와 동일한 효과를 낸다.


 

끝난 것 아닌가?

비교의 여지가 없다. iBatis는 간결하고 읽기 쉽고, 따라서 유지 보수 하는 것도 더 쉽다.


이로서 iBatis가 쓸만하다는 느낌이 왔을것이다.

하지만 궂이 사용을 해야하나? 라는 의문이 들겠지만… 


이는 다음 글을 통해서 파해쳐 보자

'FrameWork > iBatis' 카테고리의 다른 글

iBatis 설정을 알아보장~  (0) 2009.05.31
iBatis 왜 사용해야 하는가?  (0) 2009.05.31
Posted by madmeke
,