[스프링부트]_게시판_3

Kingyj·2024년 12월 26일

JSB게시판 프로젝트 게시판만들기_3

정리 할 내용

  1. 맵핑 정리
  2. 진행 과정 정리
  3. 오류/애러 정리
  4. 해결 과정 정리

지난 진행 과정

  1. URL 연결
  2. Database 연결

이번포스팅 진행 과정

  1. Entity로 테이블 매핑
  2. 리포지터리로 데이터베이스 관리
  3. 도메인별로 폴더 분류
  4. 질문 목록 만들기

  1. Entity로 테이블 매핑

@Entity

Entity는 스프링부트에서 데이터베이스 테이블과 연결된 "데이터의 틀"같은 것이다.

  • 엔티티는 특별한 상자다.

    • 이 상자 안에는 우리가 저장하고 싶은 데이터를 담을 수있다.
    • 예를 들어, "학생 상자"에는 이름,나이,학년 같은 세부 정보들을 넣을 수 있다.
  • 엔티티는 데이터베이스와 친구다.

    • 데이터베이스에서는 정보를 정리해서 표로 저장하는데, 엔티티는 이 표를 코드로 표현한 것이다.

    • 엔티티를 만들면, 실제 데이터베이스에 있는 표랑 연결돼서 데이터를 가져오거나 저장할 수 있다.

      @Entity // "난 엔티티야!"라고 표시해주는 것
      public class Student {
        @Id // 이건 상자의 이름표 같은 것 
        // (학생마다 다르게 구분할 수 있게 해줌)
        private Long id;
      
        private String name; // 학생 이름
        private int age;     // 학생 나이
        private String grade; // 학생 학년
      
        // 이렇게 상자에 들어갈 데이터들을 정의하는 것
      }```

@Getter

[ 설명 ]

  • "가져오기" 버튼!
  • 상자에서 꺼내오기.

[ 역할 ]

  • 데이터 상자에서 정보를 꺼내오는 역할.
  • 학생 이름이 "철수"라면, getName()을 호출하면 "철수"라는 이름을 꺼내올 수 있다.

@Setter

[ 설명 ]

  • "넣기" 버튼!
  • 상자에 넣기.

[ 역할 ]

  • 데이터 상자에 새로운 정보를 넣는 역할.
  • 학생 이름을 "영희"로 바꾸고 싶으면, setName("영희")를 써서 이름을 바꿀 수 있다.
public class Student {
    private String name; // 이름 상자

    public String getName() { // Getter
        return name; // 상자에서 이름 꺼내오기
    }

    public void setName(String name) { // Setter
        this.name = name; // 상자에 새로운 이름 넣기
    }
}

@Column

[ 설명 ]

  • "데이터베이스 표의 열(칸)" 설정하기.
  • 데이터베이스 칸 정하기.

[ 역할 ]

  • 데이터베이스의 칸 이름이나 크기, 설정을 정해주는 역할.
  • 이름 상자를 데이터베이스에 저장할 때 "이름 열"이라고 표시하는 거다.
@Column(name = "student_name")
private String name;

@Id

[ 설명 ]

  • "주민등록번호" 같은 고유 번호!
  • 고유 번호 붙이기.

[ 역할 ]

  • 데이터를 구별할 수 있는 유일한 키를 설정.
  • 학생마다 다른 ID(번호)가 있어서 헷갈리지 않게 해줌.

  1. 리포지터리로 데이터베이스 관리하기
  2. 도메인별로 폴더 분류

앞서 엔티티로 테이블을 구성하여 데이터를 관리할 준비를 마쳤다. 하지만 엔티티만으로는 테이블의 데이터를 저장, 조회, 수정, 삭제 등을 할 수 없다. 이와 같이 데이터를 관리하려면 데이터베이스와 연동하는 JPA 리포지터리가 반드시 필요하다.

엔티티가 데이터베이스 테이블을 생성했다면, 리포지터리는 이와 같이 생성된 데이터베이스 테이블의 데이터들을 저장, 조회, 수정, 삭제 등을 할 수 있도록 도와주는 인터페이스이다. 이때 리포지터리는 테이블에 접근하고, 데이터를 관리하는 메서드(예를 들어 findAll, save 등)를 제공한다.

  • Answer, Question의 Repository를 각각 만들어 관리.
  • 각 각 폴더를 만들어 관련된 파일들을 정리.

  1. 질문 목록 만들기

QuestionController를 만들어 위의 사진처럼 코드를 입력한다.

@RequiredArgsConstructor

[ 설명 ]

  • Lombok이라는 라이브러리에서 제공하는 어노테이션이다. 이걸 사용하면 필수적인 필드들에 대해 자동으로 생성자를 만들어줘서, 코드를 더 짧고 간결하게 쓸 수 있다.
  • 고유 번호 붙이기.

[ 역할 ]

  • 스프링에서 의존성 주입(Dependency Injection)을 많이 쓸 때 사용한다.
  • 예를 들어, @Service, @Controller 같은 클래스에서 필수적인 의존성을 생성자로 주입받을 때 많이 사용한다.

    사용자 화면에 표시 될 내용을 HTML코드로 작성한다.

java의 com.mysite.sbb안에 넣은 여러 데이터와 코드들을 사용자가 화면을 통해 볼 수 있게 한다.


0개의 댓글