<스프링레거시>MyBatis vs JDBC

ACAI BERRY DEVELOVER·2023년 2월 22일
0
post-thumbnail

공부를 하다 보니 마이바티스와 jdbc의 차이점이 궁금해졌다.
jdbc와 마이바티스가 둘 다 필요한 건지, jdbc나 마이바티스 둘 중 하나만 필요한 건지 잘 모르겠어서 검색해보았다.

우연히 OKKY에서 나와 같은 궁금증을 품은 질문자가 있어서 해당 질문에 대한 답문을 정리해보았다.

" Mybatis는 프레임워크가 아닌 라이브러리 입니다. 그것도 jdbc를 인자로 필요로하는 jdbc에 종속된 라이브러리 입니다. 설정에 프로퍼티로 jdbc를 설정하는걸 보실수 있을거예요.
하는일은 Mybatis를 사용하면 사용자는  jdbc를 직접 호출하지 않고 Mybatis에게 일을 시킵니다.

예를들어 user테이블에 특정사용자의 userid의 정보를 조회할때 "user테이블 조회쿼리문 id", "userid"를 Mybatis에게 던져주면 이를 조합해 쿼리문을 생성하고 이를 jdbc에게 던져주면 jdbc가 디비에 접속해 쿼리문을 실행합니다.

그럼 jdbc만 있음되는데 왜 Mybatis를 쓸까요?
Mybatis가 없을 때는 쿼리문이 소스코드 안에 포합됩니다.
A, B, C, D, E 5개의 클래스에서 유저 조회쿼리를 사용한다면 5개의 소스코드에 동일한 쿼리문이 반복되겠죠. 이를 한곳으로 모읍니다.
모으긴 했지만 그래도 소스코드 안에 쿼리문이 존재하네요. 쿼리문을 xml로 빼내서 관리합니다.
그래서 생긴게된게 Mybatis가 아닐까요."

"JDBC (Java Data Base Connectivity) 는 자바에서 Database 를 연결하기 위해 제공되는 Core API 라고 생각하시면 되고
MyBatis 는 SQL Mapper의 일종으로 JDBC를 이용해서 DB에 SQL을 실행하는 것에 대한 방식을 개발적인 관점에서 좀 더 편하고 관리하기 쉽게 만든 Wrapper LIB 개념이라고 생각하시면 될 것 같습니다.
차를 운전 할 때 핸들은 제조사에서 달려 나오지만 사람에 따라서 다양한 형태의 핸들 커버를 씌우기도 하고 손잡이도 달기도 하고 그러죠. 제조사에서 달려 나온 핸들을 JDBC 라고 생각하시면 MyBatis 같은 LIB들은 핸들커버나 손잡이 정도에 해당하겠네요. 중요한건 핸들만 가지고 운전을 할수는 있지만 핸들없이 핸들커버만 가지고 운전을 할 수는 없다는점을 생각해 보시면 될 것 같습니다."

결론은 JDBC는 db와 연결, 쿼리실행, 트랜잭션 관리등 총체적인 db연동을 도와주는 api이고, MyBatis는 반복적인 쿼리실행을 줄여주고, 쿼리문을 xml로 빼내서 관리를 도와주는 라이브러리이다라고 할 수 있겠다.

profile
쓸때 대충 쓰지 말고! 공부하면서 써!

0개의 댓글