Solution/MyBatis

[IBatis / MyBatis] IBatis 와 MyBatis의 차이점?

JB1104 2021. 11. 8. 22:16
728x90
반응형
SMALL

학원에서는 MyBatis를 사용하여 웹을 제작했고, 현재 일하고 있는 곳에서 진행하는 프로젝트는 아이바티스를 사용하고 있다. 문득 어떤 차이점이 있는거지? 라는 생각이들어서 구글링을 통해 알아보았다.

 


 

일단 결론은, IBatis는 MyBatis의 구버전이다 라는 것을 알게되었다.

 

Apache project팀에서 google code팀으로 이동하면서 명칭이 변경되었다고 한다.

 

그렇다면 MyBatis에 대해서 조금 더 정리를 해봐야겠다.


 

MyBatis : Java의 관계형 데이터베이스(RDBMS) 프로그래밍을 좀 더 쉽게 할 수 있도록 도와주는 개발 프레임워크

 

JDBC : (Java DataBase Connectivity) Java에서 데이터베이스에 접속할 수 있도록 하는 Java API, Java언어로 데이터 베이스 프로그래밍을 하기위한 라이브러리.

 

MyBatis vs JDBC 차이점 : MyBatis는 SQL문이 어플리케이션 소스 코드로부터 분리된다. 또한 JDBC를 통해 수동으로 세팅한 파라미터와 결과 매핑을 대신해주어 JDBC로 처리하는 작업보다 간편하게 작업할 수 있어서 코드량이 줄어 생산성을 높여준다.

 

JDBC

package com.address.web.dao.jdbc;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
 
import com.address.web.dao.NoticeDao;
import com.address.web.entity.Notice;
import com.address.web.entity.NoticeView;
 
//@Repository
public class JdbcNoticeDao implements NoticeDao {
 
   @Override
   public List<NoticeView> getList() throws ClassNotFoundException, SQLException {
      int page = 1;
      List<NoticeView> list = new ArrayList<>();
      int index = 0;
      
      String sql = "SELECT * FROM Notice ORDER BY regdate DESC LIMIT 10 OFFSET ?";    
      String url = "jdbc:mysql://dev.notead.com:0000/address?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=UTC";
 
      Class.forName("com.mysql.cj.jdbc.Driver");
      Connection con = DriverManager.getConnection(url, "address", "123");         
      PreparedStatement st = con.prepareStatement(sql);
      st.setInt(1, (page-1)*10); 
      
      ResultSet rs = st.executeQuery();
            
      while (rs.next()) {
         NoticeView noticeView = new NoticeView();
         noticeView.setId(rs.getInt("ID"));
         noticeView.setTitle(rs.getString("TITLE"));
         noticeView.setWriterId(rs.getString("writerId"));
         noticeView.setRegdate(rs.getDate("REGDATE"));
         noticeView.setHit(rs.getInt("HIT"));
         noticeView.setFiles(rs.getString("FILES"));
         noticeView.setPub(rs.getBoolean("PUB"));
         
         list.add(noticeView);      
      }
 
      rs.close();
      st.close();
      con.close();
      
      return list;
   }
 
   @Override
   public Notice get(int id) {
      // TODO Auto-generated method stub
      return null;
   }
 
   @Override
   public int insert(Notice notice) {
      // TODO Auto-generated method stub
      return 0;
   }
 
   @Override
   public int update(Notice notice) {
      // TODO Auto-generated method stub
      return 0;
   }
 
   @Override
   public int delete(int id) {
      // TODO Auto-generated method stub
      return 0;
   }
 
}


출처: https://hyoni-k.tistory.com/70 [Record *]

 

 

MyBatis

package com.address.web.dao;
 
import java.sql.SQLException;
import java.util.List;
 
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
 
import com.address.web.entity.Notice;
import com.address.web.entity.NoticeView;
 
@Mapper     
public interface NoticeDao {
    
    @Select("SELECT * FROM Notice WHERE ${field} LIKE '%${query}%' ORDER BY regdate DESC LIMIT 10")
    List<NoticeView> getList(int page, String query, String field) throws ClassNotFoundException, SQLException;
    
    @Select("SELECT * FROM Notice WHERE id= #{id}")
    Notice get(int id);
    int insert(Notice notice);
    int update(Notice notice);
    int delete(int id);


출처: https://hyoni-k.tistory.com/70 [Record *]

 

 

 

 

Ibatis vs MyBatis 차이점

IBatis MyBatis 비고
JDK1.4 이상 JDK 1.5 이상 버전
com.ibatis.*  org.apache.ibatis.*  패키지구조
parameterMap, parameterClass  parameterType SqlMap.xml에서 변경사항
SqlMapConfig Configration 명칭 변경
sqlMap Mapper 네이스페임스 변경
resultClass resultType 명칭 변경
rowHandler resultHandler 명칭 변경
resultHandler SqlSessionFactory 명칭 변경
#str# #{str} 구문 변경
$str$ ${str} 구문 변경

 

 

 

MyBatis 구조

출처 : https://sjh836.tistory.com/127

  • Mybatis-config.xml은 MyBatis의 메인 환경설정 파일로서, 어떤 DBMS와 접속을 할지, 어떤 맵퍼 파일들이 있는지 알 수 있음
  • MaBatis는 매퍼에 있는 각 SQL 명령어들을 Map에 담아서 저장하고 관리
728x90
반응형
LIST