Spring Boot와 JPA로 간단한 게시판 구현하기

이번 포스팅에서는 Spring Boot와 JPA를 활용하여 간단한 게시판을 구축하는 방법에 대해 살펴보겠습니다. 웹 애플리케이션을 개발하는 데 있어서, 게시판은 기본적인 CRUD(Create, Read, Update, Delete) 기능을 구현할 수 있는 좋은 예제입니다. 이 글에서는 프로젝트 생성부터 데이터베이스 설정, 엔티티 구성, 그리고 간단한 컨트롤러 구현까지의 과정을 상세히 설명하겠습니다.

프로젝트 생성하기

Spring Boot 프로젝트를 생성하기 위해 Spring Initializr를 활용할 수 있습니다. 이 사이트에서는 필요한 의존성을 쉽게 추가할 수 있으며, Gradle 또는 Maven을 선택하여 프로젝트를 설정할 수 있습니다. 프로젝트 이름과 패키지 이름을 정한 후, JPA와 MySQL 관련 의존성을 추가하는 것이 좋습니다.

  • org.springframework.boot:spring-boot-starter-data-jpa
  • mysql:mysql-connector-java

위의 두 의존성을 추가하면 JPA와 MySQL을 연동하여 사용할 수 있는 환경이 구축됩니다. 의존성을 추가한 후 프로젝트를 생성하고 IDE에서 열어줍니다.

application.yml 설정하기

프로젝트의 설정 파일인 application.yml에서 데이터베이스 연결 정보를 설정해야 합니다. 아래와 같이 데이터 소스와 JPA 옵션을 정의합니다.

spring:
 datasource:
  url: jdbc:mysql://localhost:3306/게시판명
  username: 사용자명
  password: 비밀번호
 jpa:
  hibernate:
   ddl-auto: update
  show-sql: true

여기서 ddl-auto 옵션은 데이터베이스의 테이블을 자동으로 생성하거나 업데이트하는 방법을 정의합니다. show-sql:true로 설정하면 실행되는 SQL 쿼리를 콘솔에서 확인할 수 있습니다.

엔티티 클래스 만들기

이제 데이터베이스 테이블과 연관된 엔티티 클래스를 작성합니다. 예를 들어, 게시판의 게시글을 나타내는 Board 엔티티를 만들어 보겠습니다. 아래와 같이 클래스 구조를 정의합니다.

@Entity
@Table(name = "board")
public class Board {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;
  @Column(length = 50)
  private String title;
  @Column(length = 200)
  private String content;
  private LocalDateTime createdDate;
  private LocalDateTime modifiedDate;
  // Getter, Setter, Constructor 등 필요한 메서드들
}

위의 코드에서 @Entity 어노테이션은 해당 클래스가 JPA의 엔티티임을 명시하며, @Table 어노테이션으로 데이터베이스의 테이블과 매핑됩니다. 각 필드는 데이터베이스의 컬럼과 연관됩니다.

레포지토리 인터페이스 생성하기

데이터베이스와의 상호작용을 위한 BoardRepository 인터페이스를 작성합니다. 이 인터페이스는 JpaRepository를 상속받아 기본적인 CRUD 기능을 제공합니다.

public interface BoardRepository extends JpaRepository {
}

이렇게 설정하면 Board 엔티티에 대한 CRUD 작업을 수행할 수 있는 여러 메서드를 사용할 수 있습니다.

서비스 레이어 구현하기

게시판의 비즈니스 로직을 처리하기 위한 서비스 클래스를 생성합니다. BoardService 클래스에서는 BoardRepository를 주입 받아 게시글 CRUD 작업을 수행합니다.

@Service
@RequiredArgsConstructor
public class BoardService {
  private final BoardRepository boardRepository;
  public Board createBoard(Board board) {
    return boardRepository.save(board);
  }
  public List getAllBoards() {
    return boardRepository.findAll();
  }
  // Update, Delete 메서드 추가
}

컨트롤러 클래스 만들기

마지막으로, 클라이언트의 요청을 처리할 BoardController 클래스를 작성합니다. 이 클래스는 서비스 클래스를 이용하여 게시글 생성 및 조회 요청을 처리합니다.

@Controller
@RequestMapping("/boards")
@RequiredArgsConstructor
public class BoardController {
  private final BoardService boardService;
  @PostMapping("/create")
  public String createBoard(@ModelAttribute Board board) {
    boardService.createBoard(board);
    return "redirect:/boards";
  }
  @GetMapping
  public String getBoards(Model model) {
    model.addAttribute("boards", boardService.getAllBoards());
    return "boardList";
  }
}

컨트롤러에서 @PostMapping@GetMapping 어노테이션을 통해 각각 게시글 생성과 조회 요청을 처리합니다. 생성 후에는 게시글 목록 페이지로 리다이렉트합니다.

마무리하며

이 글에서는 Spring Boot와 JPA를 활용하여 간단한 게시판을 구축하는 방법을 설명했습니다. 프로젝트 생성부터 데이터베이스 연결 및 CRUD 기능 구현에 이르기까지의 과정을 살펴보았습니다. 이러한 게시판 구현은 웹 애플리케이션 개발의 기초를 배우고, 실제로 적용해 볼 수 있는 좋은 연습이 될 것입니다. 여러분도 이 글을 참고하여 자신만의 게시판을 만들어 보시기 바랍니다!

자주 물으시는 질문

Spring Boot 게시판 프로젝트를 어떻게 시작하나요?

게시판 프로젝트를 시작하기 위해 먼저 Spring Initializr를 통해 기본 구조를 생성하고 필요한 의존성을 추가하는 것이 중요합니다. 그런 다음, 데이터베이스 연결 설정을 진행해야 합니다.

JPA를 활용한 데이터베이스와의 연결은 어떻게 하나요?

JPA를 통해 데이터베이스와 연결하려면 application.yml 파일에서 데이터 소스 정보를 입력해야 합니다. 이 과정에서 데이터베이스 URL, 사용자명, 비밀번호를 설정해야 합니다.

게시판에서 CRUD 기능은 어떻게 구현하나요?

CRUD 기능은 JpaRepository 인터페이스를 통해 쉽게 구현할 수 있습니다. 필요한 서비스 클래스와 컨트롤러를 만들어 게시글의 생성, 조회, 수정, 삭제를 처리하는 메서드를 작성하면 됩니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤