우당탕탕

[무작정 따라하기 1탄] Spring Boot로 나만의 TODO 리스트 만들기 2편 본문

여러내용들/무작정 따라하기

[무작정 따라하기 1탄] Spring Boot로 나만의 TODO 리스트 만들기 2편

모찌모찝 2024. 9. 16. 21:52
무작정 따라하기 1탄 나만의 TODO리스트 만들기 2편 👩‍💻

 

안녕하세요!

이전 1편에서는 기본적인 환경구성을 진행하였습니다. 이번편에서는 데이터베이스 설계 및 엔티티 클래스를 구현해 보도록 하겠습니다.

1. TODO 엔티티 클래스 생성

1.1 엔티티 클래스란?

엔티티 클래스는 데이터베이스의 특정 테이블을 자바 객체로 표현한 것입니다. 
쉽게 말해, 엔티티는 우리가 관리하고 싶은 정보를 담는 "상자"라고 생각하면 됩니다.

1.2 JPA란?

JPA(Java Persistence API)는 자바 프로그램이 데이터베이스에 쉽게 연결할 수 있게 해주는 도구입니다.
JPA를 사용하면, 우리가 만든 상자(Todo 클래스)를 데이터베이스에 저장할 수 있습니다.

1.3 H2 데이터베이스란?

H2 데이터베이스는 작은 메모리 기반의 데이터베이스로, 우리가 애플리케이션을 실행할 때 자동으로 만들어집니다. 주로 개발단계에서 많이 사용합니다.

1.4 Todo.java 만들기

1편에서 만들었던 Todo.java 파일로 이동하여 아래 코드를 작성해줍니다.
엔티티를 알기쉽게 상자라고 표현하겠습니다.

 

package com.example.todo; // 이 파일이 어떤 그룹에 속하는지 알려줍니다.

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;

@Entity // 이 클래스가 데이터베이스의 테이블을 나타낸다는 것을 알려줍니다.
public class Todo {
    @Id // 이 필드가 고유 번호임을 나타냅니다.
    @GeneratedValue(strategy = GenerationType.IDENTITY) // 번호를 자동으로 생성하도록 설정합니다.
    private Long id; // 고유 번호 (예: 1, 2, 3...)
    private String task; // 할 일의 내용 (예: "장보기")
    private boolean completed; // 완료 여부 (true: 완료, false: 미완료)

    // 아래는 이 상자(Todo)에서 정보를 꺼내고 넣는 방법입니다.

    // 고유 번호를 가져오는 메서드
    public Long getId() {
        return id; // 상자에서 번호를 꺼내줍니다.
    }

    // 고유 번호를 설정하는 메서드
    public void setId(Long id) {
        this.id = id; // 상자에 번호를 넣어줍니다.
    }

    // 할 일 내용을 가져오는 메서드
    public String getTask() {
        return task; // 상자에서 할 일 내용을 꺼내줍니다.
    }

    // 할 일 내용을 설정하는 메서드
    public void setTask(String task) {
        this.task = task; // 상자에 할 일 내용을 넣어줍니다.
    }

    // 완료 여부를 가져오는 메서드
    public boolean isCompleted() {
        return completed; // 상자에서 완료 여부를 꺼내줍니다.
    }

    // 완료 여부를 설정하는 메서드
    public void setCompleted(boolean completed) {
        this.completed = completed; // 상자에 완료 여부를 넣어줍니다.
    }
}

위의 코드를 전체적으로 뜯어보면 아래와 같습니다

- 패키지 선언

package com.example.todo;

이 코드는 이 클래스가 com.example.todo라는 그룹(패키지)에 속한다는 것을 나타냅니다. 패키지는 관련된 클래스를 그룹화 시키는데 사용됩니다.

- JPA 관련 라이브러리 임포트

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;

이 코드는 JPA에서 제공하는 기능을 사용하기 위해 필요한 라이브러리를 가져오는 코드입니다. 이후 사용될 @Entity, @Id, @GenerateValue와 같은 어노테이션을 사용하기 위해 필요합니다.

👩‍💻어노테이션이란?

어노테이션은 자바 코드에 추가하는 메타데이터로, 코드에 대한 정보를 제공합니다. 쉽게 말해, "이 클래스는 특별한 역할을 한다" 또는 "이 메서드는 특정 방식으로 실행된다"라고 컴퓨터에게 알려주는 주석 같은 것입니다.

- @Entity 어노테이선

@Entity

이 어노테이션은 이 클래스가 데이터베이스의 테이블을 나타내는 클래스임을 JPA에게 알려주는 역할을 합니다.

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id; // 고유 번호

@Id : 이 필드가 각 TODO 항목을 구분하는 고유 번호임을 나타냅니다.
@GeneratedValue(starategy = GenerationType.IDENTIFY) : 이 코드는 위에 설정한 Id 고유번호가 1씩 증가하게 설정함을 의미합니다. 예를들어 처음저장되는 데이터의 경우 1, 두번째는 2, 세번째는 3 ... 이런식으로 증가하게 됩니다.

- 필드선언

private String task; // 할 일의 내용
private boolean completed; // 완료 여부

- private String task : 이 필드는 TODO 항목의 내용을 저장하는 필드이며, "장보기", "청소하기" 등의 문자열이 저장됩니다. 
- private boolean completed : 이 필드는 TODO 항목이 완료되었는지를 나타냅니다. true이면 완료, false이면 미완료입니다.

엔티티 작성이 완료되었으면 이제 H2 데이터베이스에 대한 설정을 진행해보겠습니다.
먼저 src/main/resources 폴더에 존재하는 application.properties 파일을 열어줍니다.
해당 파일안에 아래와 같은 코드를 추가해줍니다.

spring.h2.console.enabled=true
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.hibernate.ddl-auto=create
  • spring.h2.console.enabled=true: H2 데이터베이스의 웹 콘솔을 활성화합니다. 이 설정으로 통해 이후 웹화면에 접근할 수 있습니다.
  • spring.datasource.url=jdbc:h2:mem:testdb: 메모리 내에서 사용할 데이터베이스의 URL입니다. 여기서 testdb는 데이터베이스 이름입니다.
  • spring.datasource.driverClassName=org.h2.Driver: H2: 데이터베이스를 사용할 때 필요한 드라이버입니다.
  • spring.datasource.username=sa: 데이터베이스에 접근할 때 사용할 사용자 이름입니다.
  • spring.datasource.password=: 데이터베이스 비밀번호입니다. 기본적으로 H2는 비밀번호가 없습니다.
  • spring.jpa.hibernate.ddl-auto=create: 애플리케이션이 시작될 때 데이터베이스 테이블을 생성하도록 설정합니다. (위에서 만든 Todo엔티티 파일로 Todo 테이블이 생성됩니다)

해당 코드를 넣게되면 application.properties는 아래와 같습니다

application.properties

 

모든 설정이 완료되었으면 한번 서버를 실행시켜서 제대로 작동하는지 확인해봅시다.

TodoApplication.java로 가서 public class TodoApplication 옆에있는 화살표를 눌러줍니다.

나타나는 메뉴에서 Run 'TodoApplication'을 눌러주면 스프링부트 서버가 실행되게 됩니다.
실행시 나오는 아래 로그에서 아래와 같이 Started TodoApplication in x seconds가 나타나게 되면 서버가 켜진상태입니다.

서버가 켜진 상태라면 H2데이터베이스 웹링크인 http://localhost:8080/h2-console 링크로 접속해봅시다.
접속하게 되면 아래와 같이 창이뜨게 되는데 이전에 application.properties에서 설정했던 내용대로 적혀있다면 Connect를 눌러 접속해봅시다.

H2 데이터베이스

연결을 진행해보면 이전에 작성한 Todo 테이블이 존재하는 것을 확인할 수 있습니다.

오른쪽 흰 텍스트칸은 H2 데이터베이스의 콘솔 칸이며 데이터베이스에 대한 명령어를 날려볼 수 있습니다.
ex ) select * from todo 
해당 명령어를 작성하고 위쪽에 Run 버튼을 눌러보면 아래와 같은 결과를 받을 수 있습니다. ( 아직 데이터가 없기 때문에 0건으로 나오는 것이 정상입니다 )

select * from todo 결과

 

이번 편에서는 TODO 리스트를 위한 데이터베이스의 구조를 만들고, 이를 자바 코드로 구현하는 방법에 대해 진행해보았습니다. 다음편에서는 이 정보를 이용해 실제로 TODO 항목을 추가하고 조회하는 기능을 구현해 보겠습니다.

Comments