본문 바로가기
자바,스프링 - Java,Spring Framework

mybatis(마이바티스)란, mybatis 사용하는 사유/이유, mybatis 장점/단점

by devscb 2021. 10. 31.
반응형

 

 

 

1. 마이바티스(mybatis)란?

 

"Java에서 DBMS에 엑세스하는 작업을 캡슐화하여 쉽게 사용할 수 있게 도와주는 Framework입니다."

마이바티스는 사용자 지정 SQL, 저장된 절차 및 고급 매핑을 지원하는 first class persistent 프레임워크입니다.

마이바티스는 JDBC 코드와 매개 변수의 수동 설정 및 결과 검색을 거의 모두 제거합니다.

마이바티스는 맵 프리미티브, 맵 인터페이스 및 Java Pojo (Plain Java Object) 를 위한 간단한 XML 또는 주석을 사용할 수 있습니다.

 

 

2. Mybatis 사용하는 이유? 왜 쓰고 있나? (mybatis의 장점)

1) 쿼리를 XML 로 분리 쿼리를 XML로 분리함으로써 아래와 같은 장점을 가질 수 있습니다.

- 쿼리 수정후 Java 파일을 다시 빌드할 필요 없다.

- Java에 직접 코드를 작성하는 것이 아니라 작성하기 쉽고 가독성이 좋다.

- 역할분리를 세분화 할 수 있다. (Java 로직 작성 담당자, 쿼리 작성 담당자)

 

 2) SQL로 DB에 접근하다 보면 경우에 따라 SQL문이 변경이 필요한 경우가 있습니다.

 MyBatis를 활용하면 단편적으로 제어문이나 반복 등의 처리가 가능하여 dynamic 쿼리를 작성할 수 있습니다.

 (xml 안의 for, if 문을 작성하여 쿼리를 동적으로 사용가능) 예제코드를 볼까요?

 

<Mybatis 사용하지 않을때 작성 쿼리 ↓>

 

public Entity selectList(Connection conn, Entity param) throws SQLException

 {

    Statement stmt = null; StringBuffer sql = new StringBuffer();

    sql.append("\n SELECT *");

    sql.append("\n FROM");

    sql.append("\n TBL");

    stmt = conn.prepareStatement(sql.toString());
    Entity rs = new Entity();

    rs.put("_DATA", EntityUtil.ResultSetToClobList(stmt.executeQuery()));

    return rs;

}

 

소스를 보면 StringBuffer 클래스를 사용하고 문자열을 계속 append하면서 sql query를 작성합니다.

이러한 방식은 쿼리가 수정될 때 마다 계속 .java파일을 수정하여

.append() 메소드를 추가하고 저장해 빌드하여유지 유지보수가 힘들고 sql query구문의 분리가 어려워지고 복잡해지는 단점이 있습니다.

 또한 쿼리가 길어질수록 자바파일에 자바코드 뿐만아니라 쿼리코드로 인해 양이 방대해지는 문제가 발생하여 유지보수가 어려워집니다.

 

<Mybatis 적용 후 소스 방식 ↓>

 //Java 부분

session.selectList("selectList");

xml로 빼내서 쿼리문을 작성하면 내부적 처리는 Mybatis에서 모두 처리해주므로 Entity Id 값을 java에서 호출만하면 된다.

자세한 사용법은 조만간 포스팅하겠습니다~

 

 

3. mybatis의 단점

1) XML 파일을 따로 관리하여 소규모 프로젝트에서는 오히려 더 관리/수정이 어려울 수 있다.

2) XML 파일에 쿼리 외에 내용도 작성하여 생산성이 감소할 수 있다.

3) SQL을 직접 작성하여 반복되는 작업이 존재할 수 있습니다.

 

결론

대규모 프로젝트에서는 체계적으로 코드를 관리하기 위해서 사용하면 좋은 도구가 될 수 있지만,

소규모 프로젝트에서는 오히려 관리할게 많아져 복잡하고 오히려 생산성을 저하시킬 수 있습니다.

 

 

#mybatis, #orm,#framework,#프레임워크,#db,#디비,#마이바티스,java,#자바

 

https://devscb.com/post/54

 

mybatis (MyBatis), reasons/reasons for using mybatis, advantages/disadvantages of mybatis

What is mybatis? “It is a framework that encapsulates the task of accessing DBMS in Java and makes it easy to use.” MyBatis is a first class persistent framework that supports custom SQL, stored pr

devscb.com

 

728x90
반응형

댓글