Spring MyBatis를 이용하여 DB 연결하기

안녕하세요. YeopBox의 상큼한놈 입니다.

이번에는 스프링 프레임워크에서 DB를 연동하는 방법에 대하여 간략하게 알아보도록 하겠습니다.

MyBatis를 이용하여 실제 JDBC 연결단은 XML 설정으로 코드와 분리하여 구현할 예정입니다.

스프링 프레임워크나 전자정부프레임워크에서 DB연동시 자주 사용함으로 MyBatis에 대해서는 자세히 알아두는 것이 좋습니다.

프로젝트 설정파일 수정하기

DB및 MyBatis 라이브러리를 추가하기 위하여 maven 설정파일인 pom.xml에 아래 dependency를 추가해 줍니다.

/webapp/WEB-INF 하단에 있는 web.xml의 servlet contextConfigLocation 설정을 아래와 같이 변경해 줍니다.

기존에 /webapp/WEB-INF 하단에 있던 servlet-context.xml 혹은 dispatcher-servlet.xml 파일은 resources/spring/servlet 폴더를 생성한 뒤 그 하단으로 옮겨줍니다.

이후 dispatcher-servlet.xml 파일을 servlet-context.xml으로 수정해 줍니다.

이제 resource/spring/servlet 하단에 있는 *-context.xml 파일은 자동으로 설정 파일이 로드됩니다.

resource/spring/servlet하단에 db-context.xml 파일을 생성한 뒤 아래 코드를 복사해 줍니다.

datasource 설정을 자신의 DB 환경에 맞게 수정해 준 뒤, typeAliasesPackage및 basePackage 값을 본인의 package 명으로 변경해 줍니다.

resource/mybatis 경로에 mybatis-config.xml 파일을 생성한 뒤 아래 항목을 복사해 줍니다.

추후 VO 파일을 추가할 예정이지만 매퍼 파일을 먼저 만들도록 하겠습니다.

resource/query 경로에 main.xml이라는 매퍼 XML 파일을 생성합니다.

getCurTime은 현재 DB의 시간을 받아오는 쿼리로 간단하게 만들어 보았습니다.

프로젝트 코드 파일 추가하기

MainVO 빈 객체는 심플하게 현재 시간에 대한 String 값을 받아오는 것으로 생성하였습니다.

Getter,Setter 및 생성자와 toString 오버라이드 메소드를 생성해 주었습니다.

이번엔 Mapper를 생성해 줍니다. 이전 Mybatis 1.3.0 이전 버전에서는 SqlSessionDaoSupport를 상속받아 DAO를 생성한 뒤 해당 DAO를 이용하였지만,

이후에는 Mapper 인터페이스를 생성한 뒤 XML과 매핑하여 이용하는 방식으로 변경되었다고 합니다.

필자의 경우 Mapper 인터페이스를 이용하여 구현하였습니다.

이번엔 Service에 대한 인터페이스를 생성하였습니다. 현재 시간을 받아오는 getCurTime 메소드를 하나 정의하였습니다.

이후 MainService를 구현한 서비스 클래스를 생성하였습니다.

MainMapper에서 getCurTime을 받아오도록 구현하였습니다.

최종적으로 log를 통하여 현재 DB의 시간을 로그를 통하여 확인할 수 있도록 구현하였습니다.

지금까지 따라와 주셨으면 프로젝트 구성은 아래와 같이 되어 있을 겁니다.

이제 프로젝트를 기동해 보면 아래와 같이 정상적으로 DB와 접속하여 현재 시간을 받아오는 것을 확인할 수 있습니다.

이제 정상적인 연결및 동작을 확인하였으니, VO와 매핑 XML 파일을 수정하여 데이터베이스에서 CRUD를 할 수 있도록 코드를 주물러 주시면 됩니다.

마치며…

이번에는 간단하게 스프링 프레임워크에서 MyBatis를 이용하여 DB에 연결하는 방법에 대하여 알아보았습니다.

필자가 포스트를 작성한 시점에서 최신의 lib를 이용하였는데, 그로 인하여 이용 방법이 기존과는 조금 다른점이 있더라구요.

특히 DAO가 아닌 Mapper를 이용한 CRUD는 참신하게 다가왔습니다.

Spring은 그 범위가 넓어서 알아가는 재미가 있는 것 같습니다. 부가적으로 필요한 내용이나 궁금한 내용이 있으신 분은 댓글 남겨주세요.

감사합니다.

Avatar photo

상큼한놈 $ whoami

웹프로그래머 상큼한놈 입니다. 사이트에 방문해 주셔서 감사합니다.│

답글 남기기

이메일 주소는 공개되지 않습니다.