안녕하세요! 이번 포스트에서는 Spring Boot와 JPA를 활용하여 간단한 게시판 시스템을 구축하는 방법에 대해 알아보겠습니다. 이 글은 단계별로 구성되어 있으며, 프로그래밍을 처음 시작하시는 분들도 쉽게 따라 하실 수 있도록 설명할 예정입니다.

프로젝트 생성하기
우선, Spring Boot 프로젝트를 생성하는 과정에 대해 살펴보겠습니다. 다양한 IDE 중 IntelliJ IDEA를 사용하면 Spring Initializr를 통해 손쉽게 프로젝트를 구성할 수 있습니다. 이를 통해 직접 모든 설정을 수동으로 입력하는 번거로움을 덜 수 있습니다.
IntelliJ IDEA를 통한 프로젝트 생성
IntelliJ에서 프로젝트를 생성하려면, 상단 메뉴에서 ‘File’을 클릭한 후 ‘New’를 선택하고 ‘Project’를 클릭합니다. 그러면 Spring Initializr 페이지로 이동하게 되며, 여기서 필요한 옵션들을 선택할 수 있습니다. 저희는 Java, Gradle을 선택하고, Spring Boot의 버전은 최신 안정화가 이루어진 버전을 선택하는 것이 좋습니다.
Spring Initializr 사용하기
Spring Initializr 웹사이트(https://start.spring.io/)를 통해 프로젝트를 생성할 수도 있습니다. 여기서 설정할 주요 항목들은 다음과 같습니다:
- Project: Gradle Project 선택
- Language: Java 선택
- Spring Boot: 최신 버전 선택
- Dependencies: 웹 애플리케이션에 필요한 라이브러리 추가
위의 설정을 마친 후 ‘Generate’ 버튼을 클릭하면 ZIP 파일이 다운로드됩니다. 이 파일을 압축 해제하고 IntelliJ에서 프로젝트를 열어주세요.
build.gradle 파일 설정하기
프로젝트를 생성한 후, build.gradle 파일에 들어가 필요한 의존성을 추가해주어야 합니다. 이 파일은 Gradle의 빌드 스크립트로, 각종 설정을 관리하는 역할을 합니다. 예를 들어, 스프링 부트의 웹 기능과 JPA를 사용하기 위한 의존성을 추가해야 합니다.
의존성 추가하기
build.gradle 파일의 ‘dependencies’ 섹션에 아래와 같은 내용을 추가합니다:
dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.thymeleaf.springboot:thymeleaf-spring-boot-starter' compileOnly 'org.projectlombok:lombok' runtimeOnly 'org.mariadb.jdbc:mariadb-java-client' testImplementation 'org.springframework.boot:spring-boot-starter-test' }
여기서 각 의존성의 의미는 다음과 같습니다:
- spring-boot-starter-web: 웹 애플리케이션을 개발하기 위한 기본적인 도구입니다.
- spring-boot-starter-data-jpa: JPA를 이용하여 데이터베이스와의 상호작용을 돕는 라이브러리입니다.
- thymeleaf-spring-boot-starter: Thymeleaf 템플릿 엔진을 사용할 수 있게 해주는 라이브러리입니다.
- lombok: Getter, Setter 등의 코드를 자동으로 생성해주는 라이브러리입니다.
- mariadb-java-client: MariaDB 데이터베이스와 연결하기 위한 드라이버입니다.
application.yml 파일 설정
스프링 부트에서는 application.yaml 또는 application.properties 파일을 통해 애플리케이션의 설정을 관리합니다. YAML 파일을 사용하면 읽기 쉽고 설정 관리가 용이합니다.

YAML 파일 세팅하기
아래의 내용을 application.yaml 파일에 추가합니다:
spring: datasource: url: jdbc:mariadb://localhost:3306/test_schema?serverTimezone=Asia/Seoul username: root password: your_password driver-class-name: com.mysql.cj.jdbc.Driver jpa: hibernate: ddl-auto: update show-sql: true properties: hibernate: format_sql: true
여기서 설정한 사항들은 데이터베이스 연결 정보와 JPA 관련 설정들을 포함합니다. 이 설정을 통해 데이터베이스와 연결하고 쿼리를 생성할 수 있습니다.
기본적인 CRUD 구현하기
이제 게시판의 기본적인 CRUD(Create, Read, Update, Delete) 기능을 구현해봅시다. 우선, 게시판의 데이터 모델을 생성하고 JPA를 활용하여 간단한 데이터베이스 상호작용을 구현할 것입니다.
모델 클래스 정의
게시판의 데이터를 표현하기 위한 모델 클래스를 생성합니다. 예를 들어, 게시판의 정보를 담을 Board
클래스를 만들 수 있습니다:
@Entity public class Board { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String title; private String content; private String author; // Getter와 Setter 메서드 }
리포지토리 생성하기
다음으로, 데이터를 데이터베이스에 CRUD 작업을 수행할 수 있는 리포지토리 인터페이스를 생성합니다. Spring Data JPA를 사용하면 인터페이스만으로 기능을 구현할 수 있습니다:
public interface BoardRepository extends JpaRepository{ }
서비스 클래스 생성
이제 실제 비즈니스 로직을 구현할 서비스 클래스를 작성합니다:
@Service public class BoardService { @Autowired private BoardRepository boardRepository; public ListfindAll() { return boardRepository.findAll(); } public void save(Board board) { boardRepository.save(board); } public Optional findById(Long id) { return boardRepository.findById(id); } public void delete(Long id) { boardRepository.deleteById(id); } }
컨트롤러 생성하기
마지막으로, 요청을 처리할 컨트롤러를 작성하겠습니다. 이 컨트롤러는 클라이언트의 요청을 받고, 서비스 클래스를 호출하여 결과를 반환합니다.
@Controller @RequestMapping("/boards") public class BoardController { @Autowired private BoardService boardService; @GetMapping public String list(Model model) { model.addAttribute("boards", boardService.findAll()); return "board/list"; } @PostMapping public String create(Board board) { boardService.save(board); return "redirect:/boards"; } @GetMapping("/{id}") public String detail(@PathVariable Long id, Model model) { model.addAttribute("board", boardService.findById(id).orElse(null)); return "board/detail"; } @DeleteMapping("/{id}") public String delete(@PathVariable Long id) { boardService.delete(id); return "redirect:/boards"; } }

결론
이번 포스트에서는 Spring Boot와 JPA를 활용하여 간단한 게시판을 만드는 방법에 대해 알아보았습니다. 이 과정에서 프로젝트 생성, 의존성 추가, 데이터 모델링, 서비스 및 컨트롤러 구현 등을 다뤘습니다. 앞으로 더 많은 기능을 추가하며 게시판 프로젝트를 발전시키는 경험을 통해 다양한 기술적 역량을 쌓아보시길 바랍니다.
질문 FAQ
Spring Boot와 JPA란 무엇인가요?
Spring Boot는 빠른 애플리케이션 개발을 위한 프레임워크이며, JPA는 객체와 관계형 데이터베이스 간의 상호작용을 돕는 API입니다.
게시판 시스템을 구축하기 위해 필요한 것은 무엇인가요?
게시판 시스템을 만들려면 Spring Boot 프로젝트, JPA 설정, 데이터베이스 연결 등이 필요합니다.
CRUD 기능은 어떻게 구현하나요?
CRUD 기능은 데이터를 생성하고 조회하며, 수정 및 삭제하는 작업을 리포지토리와 서비스 클래스를 통해 구현할 수 있습니다.
YAML 파일의 역할은 무엇인가요?
YAML 파일은 Spring Boot 애플리케이션의 설정을 관리하며, 데이터베이스 연결 등의 정보를 설정합니다.