본문 바로가기

Spring/Benepicture 홈페이지

[베네픽처 홈페이지] MyBatis 적용

이전까지는 JDBC Template를 적용하여 로그인, 공지사항, 광고를 관리하였습니다.

 

이번에는 MyBatis를 적용하여 DB에 접근해보려합니다.

 

 

MyBatis 란

MyBatis는 자바 객체와 SQL 사이의 자동 매핑 기능을 지원하는 ORM(Object relational Mapping)프레임워크 입니다.

 

- 특징

1. 쉬운 접근성과 코드의 간결합니다.

JDBC Template와 같이 JDBC 드라이버 로드, Connection, Statement 객체 생성 등등 복잡한 JDBC코드들을 자동으로 처리해주어 깔끔한 소스코드를 유지할 수 있습니다.

 

2. SQL문과 프로그래밍 코드를 분리하여 복잡한 쿼리나 다이나믹한 쿼리에 강합니다.

xml파일로 따로 Mapper를 분리하여 다이나믹한 쿼리나 복잡한 쿼리를 자바코드 수정 없이 사용이 가능합니다.

 

3. 다양한 언어를 지원합니다.

Java뿐만 아니라 Ruby, C# 등 다양한 언어를 지원합니다.

 

 

적용 (로그인 구현)

1. 의존성 추가

처음 스프링 부트로 프로젝트를 생성할 때 MyBatis Framework를 추가하였습니다.

혹여나 추가하지 않았다면 꼭 의존성 추가를 하고 시작해야합니다.

 

2. DataSource 설정 

이전에 JDBC Template를 사용하면서 사용한 h2 정보를 그대로 사용하였습니다.

 

3. MyBatis 설정

mybatis.mapper-locations는 mapper.xml 파일의 위치를 알려줍니다.

camel case는 필드명에 있는 underline(_)을 camelCase로 변경해줍니다. (ex, user_id >>>>> userId )

mybatis.type-aliases-package는 package model의 경로를 알려줍니다.

(XML파일에서 패키지의 경로를 생략할 수 있습니다.)

 

4. Model, Mapper(Interface, XML 생성)

로그인에 필요한 Id, PW를 받을 User라는 모델과

 

로그인이라는 메서드를 만들도록 하는 UserMapper 인터페이스를 정의해줍니다.

(@Mapper 애노테이션을 붙여 MapperScan에 의해 빈등록이 될 수 있도록 해줍니다.)

 

 

XML파일은 위에서 설정한 경로에 맞춰서 설정해줍니다.

mapper의 namespace와 인터페이스가 일치해야하며, select의 id 값과 인터페이스의 메서드의 이름이 일치해야합니다.

 

 

 

5. 테스트

기존 로그인 로직에서 loginService(JDBC Template로 구현)한 것을 Mybatis로 구현한 값으로 변경해주었습니다.

원래는 서비스 로직을 변경해야하지만, 두 적용의 차이를 보기 위해 Controller에서 변경하도록 하였습니다.