본문 바로가기

개발/spring

게시판 백엔드 서버 구축하기

게시판 백엔드 서버의 요구 사항 정의하기
게시판 백엔드 서버 구축을 시작하기 전에 게시판 백엔드 서버에 대한 요구 사항을 정의해 보겠습니다. 게시판 백엔드 서버는 다음을 수행할 수 있어야 합니다:

게시글 작성, 읽기, 업데이트 및 삭제(CRUD).
데이터베이스에 게시글을 저장합니다.
게시물과 상호 작용하기 위한 엔드포인트를 제공합니다.
Spring Initializr를 사용하여 새 Spring Boot 프로젝트 만들기
이제 요구 사항을 정의했으므로 Spring Initializr를 사용하여 새 Spring Boot 프로젝트를 생성해 보겠습니다. Spring Initializr는 Spring Boot 프로젝트를 빠르게 생성하기 위한 웹 기반 도구입니다. 프로젝트 종속성을 선택하고 프로젝트 구조를 생성하기 위한 간단한 인터페이스를 제공합니다.

Spring Initializr를 사용하여 새 Spring Boot 프로젝트를 생성하려면 다음과 같이 하세요:

Spring Initializr 웹사이트(https://start.spring.io/)로 이동합니다.
다음 세부 정보로 양식을 작성합니다:
프로젝트: Maven 프로젝트
언어: Java
스프링 부트: 2.5.0
패키징: Jar
Java: 11
종속성: Spring Web, Spring Data JPA, H2 데이터베이스
"생성" 버튼을 클릭합니다.
생성된 프로젝트 압축 파일을 다운로드하여 원하는 디렉터리에 압축을 풉니다.
게시판 서버용 데이터베이스 구축 및 구성하기
프로젝트를 생성했으니 이제 게시판 서버용 데이터베이스를 빌드하고 구성해 보겠습니다. 이 프로젝트에서는 설정과 사용이 쉬운 인메모리 데이터베이스인 H2 데이터베이스를 사용합니다.

게시판 서버용 데이터베이스를 빌드하고 구성합니다:

src/main/resources 디렉터리에 있는 application.properties 파일을 엽니다.
파일에 다음 속성을 추가합니다:

# Database configuration
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=

# Hibernate configuration
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=create-drop

이러한 속성은 애플리케이션에서 사용할 H2 데이터베이스를 구성합니다. spring.datasource.url 속성은 H2 데이터베이스의 URL을 설정하고, spring.jpa.hibernate.ddl-auto 속성은 Hibernate ORM(객체 관계형 매핑) 프레임워크의 동작을 설정합니다. 이 경우, 애플리케이션이 시작될 때 데이터베이스 스키마를 생성하고 애플리케이션이 종료될 때 삭제하도록 Hibernate에 지시합니다.
모델, 리포지토리 및 서비스 만들기
데이터베이스가 구성되었으므로 이제 애플리케이션의 모델, 리포지토리 및 서비스를 만들어 보겠습니다.

모델
모델은 애플리케이션의 데이터를 나타냅니다. 여기서는 게시판 애플리케이션의 게시물을 나타내는 게시물 모델을 만들겠습니다.

src/main/java/com/example/demo 디렉터리에 Post라는 Java 클래스를 새로 만듭니다.
클래스에 다음 코드를 추가합니다:

@Entity
@Table(name = "posts")
public class Post {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(nullable = false)
    private String title;

    @Column(nullable = false)
    private String content;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }
}