개발 용어/Mybatis

Mybatis란 무엇인가?

디벨로퍼룽쓰 2021. 5. 28. 14:29

웹 개발 공부를 하다보면 다양한 방법으로 데이터베이스에 접근할 수 있다.

정보처리기사를 공부할 때도 이론적으로 JDBC, ODBC, Mybatis, JPA등 아직까지 내가 제대로 알지 못한 용어들이 많다는 것을 알게됐다.

오늘은 그 중에 Mybatis가 무엇인지 알아볼 예정이다.

 

Mybatis는 실무에서 현재 가장 많이 사용하는 것으로 최신 기술인 JPA보다 이전에 나왔고 범용적으로 사용되고 있어서 공부를 하게 된다면 Mybatis를 하는건 좋은 선택인 것 같다.

 

흔히 Mapper를 다루면서 Mybatis를 접하게 되는데 SQL문의 수정을 코드내에서 할 필요가 없이 설정해두는 XML에서 할 수 있어서 Mybatis가 좋은 점이다. 이론적으로 보기에는 무슨말인지 잘 알 수 없으니 코드를 보자 

 

[ User_mapper.xml ]

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE mapper 
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 

<mapper namespace="UserDAO"> 

	<insert id="insert">
	insert into users(id, password, postcode, roadAddress, jubunAddress, detailAddress, extraAddress)
	values(#{id}, #{password}, #{postcode}, #{roadAddress}, #{jubunAddress}, #{detailAddress}, #{extraAddress})
	</insert>

	<select id="getUser" resultType="user">
	select * from users where id = #{id}
	</select>
    
</mapper>

스프링에서 mybatis를 사용하기 위해서는 여러가지 설정을 해야하고, 스프링 부트를 사용하면 환경설정이 상당히 쉬워진다. 환경설정은 나중에 따로 포스팅 할 예정이다.

 

그럼 xml을 살펴보자.

첫줄부터 보면 xml이라는 것을 명시하고,

DOCTYPE을 mapper로 하면서 mapper인지 configuration인지 문서적으로 파악할 수 있다.

 

매퍼가 열리고 이 매퍼의 명칭을 정해주자. 다른 매퍼를 여러개 만들어두면 어떤 매퍼를 들고와서 사용했는지 알려주기 위함이다. 여기서 나는 사용자의 데이터를 컨트롤하는 매퍼를 만들었기 때문에 UserDAO로 사용했다. DAO라하면 MVC모델에서 비즈니스 로직을 처리하기 위한 SQL문의 모임이다. 그것은 .java형태의 파일이었지만 수정이 생기면 그 DAO를 계속해서 변경해줘야한다는 단점이 있다.

 

프로그래밍에서 가장 중요하게 생각하는 것 중 하나가 독립성이다. 

하나가 변경하더라도 다른 작업에 이상이 없는 것이 가장 이상적인 프로그래밍이라고 할 수 있다.

 

mybatis에서 특징들은 다음 글에서 적어볼 예정이다.