jdbc는 db 연결에서부터 쿼리 실행 트랜잭션 관리까지 다 지원하는 라이브러리이다.
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가 아닐까.