6. SpringBoot 게시판 만들기-2

롬복(Lombok) 추가

롬복(Lombok)은 자바클래스를 만들 때 흔히 만드는 코드들을 어노테이션을 이용해서 자동으로 만들어 주는 라이브러리이다.

흔히 만드는 코드란 DTO와 같은 모델에서 항상 만들게 되는 getter, setter 메서드나 상황에 따라 자주 만드는 toString, equals, hashcode와 같은 메서드를 의미한다.

이클립스와 같은 IDE에서는 이를 자동으로 만들어 주기도 하지만 소스가 길어지고 클래스가 변경되면 관련된 메서드를 수정해야 하는 단점이 있다.

롬복은 단순히 어노테이션만 붙여줌으로써 어노테이션에 맞는 코드를 자동으로 생성해준다. 자동 생성되는 코드는 소스 파일에서는 확인할 수 없지만 이클립스의 Outline과 같이 메서드 리스트를 확인할 수 있는 곳에서 자동으로 생성된 메서드를 볼 수 있다.

이클립스의 Outline

롬복을 설치하기 위해서는 사이트에서 플러그인 다운로드가 필요하다.

https://projectlombok.org/download

플러그인은 이클립스 폴더안에 저장한다.(아무곳에 저장해도 상관없다.)

lombok.jar

다음 명령어를 사용해 롬복 인스톨러를 실행한다.

java -jar C:\Users\u\eclipse\jee-2020-03\eclipse\plugins\lombok.jar

IDE에 이클립스를 선택하고 인스톨을 완료한다.

DTO 만들기

DTO는 Data Transfer Object의 약자로 VO(Value Object)와 유사한 개념으로 사용된다.(VO라고 동일한 의미로 많은 사람들이 사용한다.)

애플리케이션내의 각 계층 간 데이터를 주고받는데 사용되는 객체이다. 각 계층이란 뷰, 컨트롤러, 서비스, DAO, DB등을 의미한다.

board.dto 패키지를 생성하고 BoardDto 클래스를 생성한다.

BoardDto 클래스를 생성

BoardDto 클래스에 다음 코드를 작성한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package com.ckbs.MariaDbTest.board.dto;

import lombok.Data;

@Data
public class BoardDto {
private int boardIdx;
private String title;
private String contents;
private int hitCnt;
private String creatorId;
private String createdDatetime;
private String updaterId;
private String updatedDatetime;
}

앞서 설명한 롬복의 어노테이션 @Data를 사용해서 모든 필드에 자주사용하는 메서드를 생성한다.

각각의 변수는 DB의 게시판 테이블의 컬럼과 매칭된다.

일반적으로 자바는 카멜 표기법을 사용하지만 DB는 _를 사용하는 스네이크 표기법을 사용한다.

카멜 표기법은 각 단어의 첫글자를 대문자로 사용해 낙타 등처럼 보이기 때문에 카멜이란 이름이 붙었다.

둘의 차이는 아래 예시를 보면 이해하기 쉽다.

  • 카멜 표기법 : boardIdx
  • 스네이크 표기법 : board_idx

마이바티스 설정하기

위에서 말한 것 처럼 java에서는 카멜 표기법을 사용하고 DB에서는 스네이크 표기법을 사용하기 때문에 이를 위한 설정이 필요하다. java에서는 boardIdx가 DB의 board_idx와 매핑을 시켜줄 필요가 있다는 것이다.

물론 DB에서 SELECT board_idx As boardIdx와 같이 조회할 수도 있지만 모든 쿼리를 이와같이 작성하긴 힘들다.

마이바티스에서는 이러한 문제를 해결할 수 있는 기능을 제공한다.

application.properties에 설정 추가

application.properties에 다음 설정을 추가한다.

1
mybatis.configuration.map-underscore-to-camel-case=true

bean 등록

앞에서 설정한 map-underscore-to-camel-case 설정값을 적용해야한다.

먼저 DatabaseConfiguration 클래스를 열고 mybatisConfig()sqlSessionFactoryBean.setConfiguration(mybatisConfig());코드를 추가한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Bean
@ConfigurationProperties(prefix = "mybatis.configuration") //①
public org.apache.ibatis.session.Configuration mybatisConfig(){
return new org.apache.ibatis.session.Configuration(); //②
}

@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
sqlSessionFactoryBean.setMapperLocations(applicationContext.getResources("classpath:/mapper/**/*.xml"));
sqlSessionFactoryBean.setConfiguration(mybatisConfig()); ③
return sqlSessionFactoryBean.getObject();
}

① @ConfigurationProperties을 통해서 application.properties에서 prefix가 mybatis.configuration인 설정을 가져온다.

② 가져온 마이바티스 설정을 자바 클래스로 만들어 반환한다.

③ 해당 설정을 sqlSessionFactory에 설정해준다.

공유하기