Day 32 - Lombok

haxxru log;·2026년 4월 15일
post-thumbnail

이 글은 2026년 04월 15일 작성된 글입니다.

오늘은 Lombok 도입, 목록 검색 기능 확장, 페이징 처리,
그리고 파일 및 JSON 관련 기능 추가 내용을 정리했다.


1. Lombok 도입

반복적으로 작성하던 getter, setter, 생성자 같은 코드를 줄이기 위해 Lombok을 도입했다.

compileOnly("org.projectlombok:lombok:1.18.38")
annotationProcessor("org.projectlombok:lombok:1.18.38")

testCompileOnly("org.projectlombok:lombok:1.18.38")
testAnnotationProcessor("org.projectlombok:lombok:1.18.38")

Lombok을 적용하면 클래스가 훨씬 간결해지고,
핵심 필드와 역할에 더 집중해서 코드를 볼 수 있다.

  • 보일러플레이트 코드 감소
  • 클래스 가독성 향상
  • 유지보수 부담 감소

2. 목록 검색 기능 추가

목록 조회에서 조건에 따라 내용을 검색하거나 작성자를 검색할 수 있도록 기능이 확장됐다.

목록?keywordType=content&keyword=과거
목록?keywordType=author&keyword=작자
목록?keyword=이순신

처음에는 내용 기준 검색을 만들고,
이후 작성자 기준 검색과 기본 검색까지 차례대로 확장했다.

  • keywordType=content는 명언 내용 기준 검색
  • keywordType=author는 작성자 기준 검색
  • keywordType이 없으면 기본 검색으로 확장 가능

3. 페이징 처리

목록이 많아질수록 한 번에 전부 출력하는 방식은 불편하기 때문에
페이지 단위로 나누어 보여주는 기능을 추가했다.

목록
목록?page=2
목록?keyword=명언&page=2

기본적으로는 1페이지가 보여지고,
가장 최근 데이터 5개가 먼저 출력되도록 구현했다.

  • 기본 페이지는 1페이지
  • 한 페이지당 5개 출력
  • 검색과 페이징을 함께 사용할 수 있음

4. 검색과 페이징의 결합

검색 기능만 따로, 페이징 기능만 따로 있는 것이 아니라
검색 결과 안에서도 페이지를 나누어 볼 수 있도록 처리했다.

목록?keyword=명언&page=2

이 기능은 실제 서비스에서도 자주 쓰이는 방식이다.
데이터가 많아질수록 필요한 결과만 나누어 보는 것이 훨씬 효율적이다.

  • 검색 결과를 그대로 페이지 단위로 분리
  • 사용자 입장에서 더 보기 편한 목록 제공

5. Pageable 도입

페이지 번호와 페이지 크기를 하나의 객체로 관리하기 위해 Pageable을 도입했다.

public class Pageable {
    private int pageNo;
    private int pageSize;
}

이전에는 page와 size를 각각 따로 다뤘다면,
이제는 Pageable 객체 하나로 묶어서 전달할 수 있다.

  • pageNo: 현재 페이지 번호
  • pageSize: 페이지당 출력 개수

이렇게 객체로 분리하면 메서드 파라미터가 깔끔해지고,
확장할 때도 훨씬 유리하다.


6. 파일 기능 추가

파일 생성, 파일 존재 여부 확인, 파일 삭제 기능을 구현했다.

File file = new File("test.txt");

file.createNewFile();
file.exists();
file.delete();

파일 기능은 이후 데이터를 파일에 저장하거나 불러오는 기능의 기초가 된다.
단순해 보이지만 저장소를 파일 기반으로 확장하려면 꼭 필요한 과정이다.

  • 파일 생성
  • 파일 존재 여부 확인
  • 파일 삭제

7. 파일 테스트 강화

파일 관련 기능이 늘어나면서 테스트도 함께 강화했다.
특히 테스트가 끝난 뒤 temp 폴더가 남지 않도록 정리하는 처리까지 포함했다.

@AfterEach
void tearDown() {
    // temp 폴더 정리
}

테스트는 성공하는 것도 중요하지만,
테스트 실행 뒤 환경이 깨끗하게 유지되는 것도 중요하다.

  • 테스트 후 임시 폴더 정리
  • 반복 실행 시 안정성 확보
  • 파일 테스트 신뢰도 향상

8. JSON과 Map의 상호 변환

JSON 문자열과 Map 객체를 서로 변환할 수 있는 기능을 구현했다.

Map<String, Object> map = new HashMap<>();
String json = jsonUtil.toJson(map);

Map<String, Object> resultMap = jsonUtil.toMap(json);

이 기능은 파일 저장이나 데이터 직렬화 과정에서 자주 사용된다.
객체를 바로 저장하기 어렵기 때문에 중간 형태로 JSON을 쓰는 경우가 많다.

  • Map → JSON 변환
  • JSON → Map 변환
  • 데이터 저장 구조 확장 준비

9. WiseSayingFileRepositoryTest 시작

파일 기반 저장소 테스트를 시작했고,
저장 동작이 정상적으로 수행되는지 테스트 케이스를 추가했다.

파일 저장소는 메모리 저장소와 달리 실제 파일 입출력이 포함되기 때문에
더 꼼꼼한 검증이 필요하다.

@Test
void save() {
    // 저장 테스트
}
  • 파일 저장 테스트 시작
  • 이후 조회, 수정, 삭제 테스트로 확장 가능

✅ 정리

  • Lombok을 도입하면서 반복 코드가 줄어들고 클래스가 더 깔끔해졌다.
  • 목록 검색은 내용, 작성자, 기본 검색까지 점차 확장되었다.
  • 페이징을 적용하면서 많은 데이터를 나누어 조회할 수 있게 되었다.
  • Pageable을 따로 분리해두니 구조를 더 깔끔하게 다룰 수 있었다.
  • 파일과 JSON 기능은 이후 영속성 처리의 기초가 되는 단계였다.

0개의 댓글