_

Always be tactful

MAIN/IMDEF

04. Spring Initializr & Dependencies

택트 2025. 7. 25. 07:25

Spring Initializr는 스프링 프로젝트를 생성할 때 유용한 웹페이지다. 간단한 게시판 기능을 만들기 위해 의존성을 몇 가지 추가하였는데, 어떤 의존성들을 추가했으며 왜 추가했는지 알아보자.

Spring Web

Spring Web은 RESTful 애플리케이션을 구축하고 Spring MVC를 사용하여 웹 애플리케이션을 개발하는 데 필요한 핵심 기능을 제공한다. 기본적으로 내장된 Tomcat 서버를 포함하고 있어 별도의 웹 서버 설정 없이 바로 실행 가능하다.

 

가장 먼저 개발할 Comment API는 사용자의 요청(댓글 등록, 댓글 조회 등)을 처리하고 응답(JSON 데이터)을 반환하는 웹 애플리케이션이다. Spring Web은 이러한 웹 요청을 처리하고, 컨트롤러를 통해 비즈니스 로직을 연결하며, 뷰(HTML)를 렌더링 하거나 JSON/XML 데이터를 생성하는 데 필수적인 기능을 제공한다. 사용자가 웹 브라우저를 통해 게시판에 접근하고 상호작용할 수 있도록 해주는 기반 기술인 셈이다.

 

Spring Data JPA

Spring Data JPA는 Java Persistence API(JPA)를 사용하여 데이터 액세스 계층을 쉽게 구현할 수 있도록 도와준다. Spring과 Hibernate(가장 널리 사용되는 JPA 구현체)를 통합하여 사용할 수 있게 한다. 이를 통해 개발자는 반복적인 JDBC 코드 작성 없이 객체 지향적으로 데이터베이스와 상호작용할 수 있다.

 

댓글은 데이터베이스에 저장되어야 하는 정보다. Spring Data JPA는 이러한 데이터들을 객체 형태로 다룰 수 있게 해 주며, save(), findAll(), remove()와 같은 메서드를 사용하여 간단하게 저장, 조회, 삭제할 수 있게 해 준다. SQL 쿼리를 직접 작성할 필요 없이, 도메인 객체와 데이터베이스 테이블을 매핑하여 개발 생산성을 크게 향상시킨다.

 

H2 Database

H2 Database는 빠르고 경량화된 인메모리(in-memory) 관계형 데이터베이스다. 개발 및 테스트 목적으로 자주 사용되며, 애플리케이션이 실행될 때 메모리에 데이터베이스를 생성하고, 애플리케이션이 종료되면 데이터가 사라지는 특징이 있다. JDBC API 및 ODBC 드라이버를 지원하며, 웹 브라우저 기반의 콘솔을 통해 데이터베이스를 관리할 수 있다.

 

개발 초기 단계나 간단한 게시판 기능을 빠르게 테스트하고 싶을 때 유용하다. 실제 외부 데이터베이스(MySQL, PostgreSQL 등)를 설치하고 설정하는 번거로움 없이 바로 데이터베이스 기능을 사용할 수 있다. 게시글이나 댓글을 작성하고 삭제하는 기능을 개발하면서 데이터가 잘 저장되는지, 조회되는지 등을 쉽게 확인할 수 있도록 임시 데이터 저장소 역할을 한다. 실제 서비스 배포 시에는 MySQL, PostgreSQL 등 영구적인 데이터를 저장하는 데이터베이스로 교체하는 것이 일반적이다.

 

Lombok

Lombok은 보일러플레이트 코드를 줄여주는 유틸리티 라이브러리다. @Data, @NoArgsConstructor, @AllArgsConstructor, @Builder와 같은 어노테이션을 사용하여 getter, setter, equals, hashCode, toString 메서드 등을 자동으로 생성해 준다.

 

게시글(Board), 댓글(Comment)과 같은 도메인 객체(엔티티)를 만들 때 수많은 getter, setter, 생성자 등을 직접 작성해야 한다. Lombok은 이러한 반복적이고 지루한 코드 작성을 생략하게 하여 코드의 양을 줄여주고 가독성을 높여준다. 개발자가 핵심 로직에 더 집중할 수 있도록 도와주어 생산성을 향상한다.

 

Validation

Validation은 Bean Validation API를 구현한 것으로, 주로 Hibernate Validator를 사용한다. 데이터 유효성 검사를 위해 @NotNull, @Size, @Min, @Max, @Email 등의 어노테이션을 제공하여 객체의 필드 값에 대한 제약 조건을 정의하고 검증할 수 있게 한다.

 

게시글 제목이 비어있거나, 내용이 너무 길거나, 작성자 이름 형식이 올바르지 않은 사용자 입력에 대한 유효성 검사가 필수적이다. Validation 의존성을 통해 서버 단에서 클라이언트로부터 전송된 데이터가 사전에 정의된 규칙을 만족하는지 자동으로 검사할 수 있다. 이는 잘못된 데이터가 데이터베이스에 저장되는 것을 방지하고, 애플리케이션의 안정성과 보안을 높이는 데 기여한다.