본문 바로가기

Java

[Java] Proxy를 사용하여 MyBatis의 Mapper 구현해보기 -1-

얼마전에 Ibatis 3.0에 해당되는 mybatis가 나왔었습니다.
xml에 쿼리를 작성하지 않고도 어노테이션과 인터페이스만으로 쿼리를 실행하고 결과를 받을 수 있게 기능이
추가 되었는데요

대략적인 API의 사용 예를 보면 아래와 같습니다.

  MyBatis에서 Mapper의 사용예제
UserDataMapper.java 위와 같이 Mapper 인터페이스에 어노테이션을 활용하여 쿼리문을 넣어 놓으면
별도의 구현클래스를 만들지 않아도, SqlSession으로부터 Mapper를 얻어와서 

바로 쿼리를 실행하고 그에 따른 결과를 받을 수 있게 되어있습니다. 물론 SqlSession에는 MyBatis에서 사용하기 위해서 기본적은 DB 관련 정보들을 properties로부터 읽어와서 사용하도록 되어있을 것 입니다. 어떻게 아무런 구현체도 없이 저렇게 사용이 가능 할 것일까요? 먼저 아래의 포스트를 읽어주세요. 


http://pungjoo.tistory.com/17


GS에서 근무 할 때 저에게 많은 것을 가르쳐주셨던 풍주형님의 글입니다. 여전히 제목에는 작성중이라고 되어있지만 이 글은 저 상태만으로도 Proxy에 대해서 간단한 예제를 통해 많은 것을 보여주는 글입니다. 이 글을 보고 이해가 잘 되지 않는 예제를 몇 번씩 실행해보고 고쳐보면서 내용을 익혔었는데 MyBatis의 Mapper를 보고 MyBatis에서 Proxy를 사용하는 것이 아닐까? 라는 생각이 들었었습니다. Mapper에는 쿼리와 Return Type만이 선언 되어있습니다. 아무런 구현체가 없습니다. 그렇다면 이 Mapper의 역할을 다른 클래스가 대신 하도록 되어 있는 것이 아닐까 라는 생각과 풍주형님께서 작성하셨던 글의 예제를 좀 활용하면 비슷하게 구현을 해 볼 수 있게다 싶었던거죠.. ㅎㅎ 앞으로 2개의 포스트를 거쳐서 Proxy를 사용하여 MyBatis의 Mapper를 흉내내보려고 합니다. 본래 팀내 후배들에게 가르쳐주려고 만들었던 예제들인데요 그 예제들에 대해서 설명을 하는 형태로 글을 작성하려 합니다.