ibatis

 

iBatis 환경설정

http://ibatis.apache.org/ 에서 java 버전의 2.x 라이브러리를 다운로드 받는다.
압축을 풀고 /lib 폴더에 있는 ibatis-2xxxx.jar 라이브러리를 클래스패스에 추가하거나 웹어플리케이션의 WEB-INF/lib 에 저장합니다.


iBatis 특징

  • 간단하면서 단순한 퍼시스턴트 프레임워크이다.
  • JDBC에 비해 약 60%이상의 코드를 줄일 수 있도 간단한 설정으로 생산성을 높일 수 있다.
  • join, 적재지연 등을 활용하여 데이터 접근 속도를 높일 수 있다.
  • 관심사의 분리로 차후에 유지보수가 용이하다.
  • 전문성을 강화하기 위한 작업의 분배가 용이하다.
  • 특정 프로그래밍 언어에 종속적이지 않다.

iBatis 장점

  • SQL문과 소스 코드 분리로 소스 코드의 간결함을 유지할 수 있다
  • 데이터베이스 자원에 대한 제어를 자동으로 해결해 준다.
  • SQL Injection으로부터 보호된다

 

JDBC와 iBatis 비교

다음은 JDBC와 iBatis를 비교해보도록 하겠습니다.


JDBC 이용

UserDAO.java
public List findUserList() throws SQLException {

	Connection con = null;
	PreparedStatement pstmt = null;
	ResultSet rs = null;
	List userList = new ArrayList();

	StringBuffer query = new StringBuffer();
	query.append("SELECT USERID,PASSWORD,NAME,EMAIL FROM USERINFO ");

	try {
		con = source.getConnection();
		pstmt = con.prepareStatement(query.toString());
		rs = pstmt.executeQuery();

		while (rs.next()) {
			User user = new User();
			user.setPassword(rs.getString("PASSWORD"));
			user.setName(rs.getString("NAME"));
			user.setEmail(rs.getString("EMAIL"));
			user.setUserId(rs.getString("USERID"));
			userList.add(user);
		}

	} finally {
		if (rs != null)
			rs.close();
		if (pstmt != null)
			pstmt.close();
		if (con != null)
			con.close();
	}
	return userList;
}

iBatis 이용

UserDAO.java
…
public List findUserList() throws SQLException{

             SqlMapClient sqlMapper = MySqlConfig.getSqlMapInstance();
             
             return sqlMapper.queryForList("selectAllUser");

}
…

User.xml
…
<select id="selectAllUser" resultClass="User">

             select * from userinfo

</select>
…
iBatis이용시 소스가 더 간결해진 것을 확인할수 있습니다.
Posted by 피곤키오
,