4일차
~4.2 롬복을 활용해 리팩터링하기(종이책 p127~151)
3.4 DB 데이터 조회하기
이 절에서는 SQL 문법인 SELECT문과 INSERT문으로 DB에 저장된 데이터를 조회하고 삽입해본다.
H2 DB 접속하기
- H2 DB에 웹 콘솔로 접근할 수 있도록 허용하기 위해 src/main/resources에 있는 application.properties 파일에 spring.h2.console.enabled=true 작성
- 웹 브라우저에서 localhost:8080/h2-console 페이지 접속
- JDBC URL 부분에 DB 접근 주소를 입력해주기
- 인텔리제이의 Run 탭으로 가서 Ctrl+F를 눌러 jdbc를 검색하고 나온 ‘jdbc:h2:mem: ・・・’ 에서 ‘・・・’부분이 메모리 주소이다. 이 주소는 서버를 재시작할 때마다 바뀐다.
- ‘jdbc:h2:mem: ・・・’부분을 JDBC URL 부분에 넣어주고 connect 한다.
데이터 조회하기
- DB 화면 왼쪽에 ARTICLE 테이블을 클릭하면 오른쪽에 SELECT * FROM ARTICLE 이라는 SQL문이 나온다.
- Run을 클릭하면 key값들만 나오고 데이터가 존재하지 않는다.
- H2 DB는 모든 입출력을 메모리 모드에서 돌리기 때문에 서버를 재시작하면 DB에 저장된 내용이 사라진다.
- 데이터는 테이블에 행 단위로 저장되는데 이러한 행 하나하나를 레코드(record) 라고 부른다.
- localhost:8080/articles/new에서 제목과 내용을 입력한후 Submit하면 DB에 레코드가 들어간 것을 확인할 수 있다.

- SQL문으로 직접 레코드를 삽입하려면 DB 입력창에 INSERT 문을 작성한후 Run하면 된다.
INSERT INTO 테이블명(속성명1, 속성명2, ・・・) VALUES(값1, 값2, 값3, ・・・);
ex) INSERT INTO article(id, title, content) VALUES(3, ‘ccccc’, ‘3333’);
4장 롬복과 리팩터링
4.1 롬복이란
롬복(lombok)이란 코드를 간소화해 주는 라이브러리이다.
롬복을 이용하면 필수 코드를 간편하게 작성할 수 있으며, 로깅 기능을 이용하면 println()문을 개선할 수 있다.
로깅(logging)이란 프로그램의 수행 과정을 기록으로 남기는 것을 말한다.
리팩터링(refactoring)이란 코드의 기능에는 변함이 없이 코드의 구조 또는 성능을 개선하는 작업을 말한다.
이번 장에서는 롬복으로 코드를 리팩토링해본다.
4.2 롬복을 활용해 리팩터링하기
롬복 설치하기
-
firstproject/src/build.gradle에 롬복을 추가한다.
- 코드 중간에 dependencies {}블록에 다음과 같은 코드를 작성한다.
compileOnly ‘org.projectlombok:lombok’
annotationProcessor ‘org.projectlombok:lombok’
- dependencies 블록에는 프로젝트를 생성할 때 추가한 도구들이 적혀있다.
-
편집기에 나타난 코끼리 모양의 새로 고침(Load Gradle Changes) 버튼을 클릭하면 추가한 코드를 탐지해 라이브러리를 자동으로 다운받는다.
DTO 리팩터링하기
com.example.firstproject/dto/ArticleForm을 연다.
- ArticleForm() 생성자 간소화
- ArticleForm() 생성자 코드 전체를 지운다.
- ArticleForm 클래스 위에 @AllArgsConstructor 어노테이션을 추가한다. 이렇게 하면 title과 content를 매개변수로 하는 생성자가 자동으로 만들어진다.
- toString() 메서드 간소화
- toString() 메서드 코드 전체를 지운다.
- @ToString 어노테이션을 추가하면 toString() 메서드를 사용하는 것과 같은 효과가 난다.
엔티티 리팩터링하기
- com.example.firstproject/entity/Article을 연다.
- Article() 생성자와 toString() 메서드를 지우고 @AllArgsConstructor와 @ToString 어노테이션을 붙인다.
컨트롤러에 로그 남기기
com.example.firstproject/controller/ArticleController를 연다.
이전에 println() 문을 통해서 데이터 출력을 하도록 하였는데, 실제 서버에서 이렇게 출력하면 기록에 남지 않을뿐더러 서버의 성능에도 악영향을 끼친다.
따라서 로깅 기능을 이용해야 한다.
- ArticleController 클래스 위에 @Slf4j 어노테이션을 추가한다.
- Slf4j는 Simple Logging Facade for Java의 약자로, 로깅 기능을 사용할 수 있게 해준다.
- System.out.println() 문을 주석처리하고 log.info() 문으로 바꾼다.