728x90
mybatis-spring-boot-starter 라이브러리를 사용하면 MyBatis를 스프링과 통합하고, 설정도 아주 간단히 할 수 있다. mybatis-spring-boot-starter 라이브러리를 사용해서 간단히 설정하는 방법을 알아보자.
의존관계 추가
build.gradle
dependencies {
...
//MyBatis 추가
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.0'
...
}
- 참고로 뒤에 버전 정보가 붙는 이유는 스프링 부트가 버전을 관리해주는 공식 라이브러리가 아니기 때문이다. 스프링 부트가 버전을 관리해주는 경우 버전 정보를 붙이지 않아도 최적의 버전을 자동으로 찾아준다
- 다음과 같은 라이브러리가 추가된다.
- mybatis-spring-boot-starter : MyBatis를 스프링 부트에서 편리하게 사용할 수 있게 시작하는 라이브러리
- mybatis-spring-boot-autoconfigure : MyBatis와 스프링 부트 설정 라이브러리
- mybatis-spring : MyBatis와 스프링을 연동하는 라이브러리
- mybatis : MyBatis 라이브러리
설정
application.properties
...
#MyBatis
mybatis.type-aliases-package=hello.itemservice.domain
mybatis.configuration.map-underscore-to-camel-case=true
logging.level.hello.itemservice.repository.mybatis=trace
- mybatis.type-aliases-package
- MyBatis에서 타입 정보를 사용할 때는 패키지 이름을 적어주어야 하는데, 여기에 명시하면 패키지 이름을 생략할 수 있다. 지정한 패키지와 그 하위 패키지가 자동으로 인식된다. 여러 위치를 지정하려면 (', ' , ';')로 구분하면 된다.
- mybatis.configuration.map-underscore-to-camel-case JdbcTemplate의 BeanPropertyRowMapper 에서 처럼 언더바를 카멜로 자동 변경해주는 기능을 활성화한다.
- logging.level.hello.itemservice.repository.mybatis=trace MyBatis에서 실행되는 쿼리 로그를 확인할 수 있다.
관례의 불일치
자바 객체에는 주로 카멜( camelCase ) 표기법을 사용한다.
itemName처럼 중간에 낙타 봉이 올라와 있는 표기법이다. 반면에 관계형 데이터베이스에서는 주로 언더스코어를 사용하는 snake_case 표기법을 사용한다. item_name처럼 중간에 언더스코어를 사용하는 표기법이다.
이렇게 관례로 많이 사용하다 보니 map-underscore-to-camel-case 기능을 활성화하면 언더스코어 표기법을 카멜로 자동 변환해준다. 따라서 DB에서 select item_name으로 조회해도 객체의 itemName ( setItemName() ) 속성에 값이 정상 입력된다.
정리하면 해당 옵션을 켜면 snake_case는 자동으로 해결되니 그냥 두면 되고, 컬럼 이름과 객체 이름이 완전히 다른 경우에는 조회 SQL에서 별칭을 사용하면 된다
728x90
'스프링 DB 2편(데이터 접근 활용 기술)' 카테고리의 다른 글
| Ch04. MyBatis - MyBatis 기능 정리 (0) | 2022.06.27 |
|---|---|
| Ch04. MyBatis - MyBatis 적용 (0) | 2022.06.27 |
| Ch04. MyBatis - MyBatis 소개 (0) | 2022.06.27 |
| Ch03. 테스트 - @Transactional, 임베디드 모드 DB, 스프링 부트와 임베디드 모드 (0) | 2022.06.26 |
| Ch03. 테스트 - 데이터베이스 연동, 데이터베이스 분리, 데이터 롤백 (0) | 2022.06.26 |