Project/SpringBoot+JPA 게시판

[SpringBoot + JPA 게시판 만들기] 프로젝트 생성 및 환경 설정 + 엔티티(Entity) 생성 - 2

2024. 2. 13. 00:54
목차
  1. 🔥 프로젝트 생성
  2. ✔ Domain 생성, 연관관계 매핑
  3. 📌

 

🔥 프로젝트 생성

Spring initializer 를통해 버전 정보, 언어, 이름, 의존성 등을 설정하고 프로젝트를 생성해줍니다. 

 

💡 Dependencies

Lombok : 어노테이션을 사용하여 getter, setter와 같은 반복되는 형식적인 코드를 줄이기 위해 의존성 설정합니다.
Spring Web : Spring MVC, Apache Tomcat 등 웹개발에 필요한 의존성을 제공합니다.

Thymeleaf : Thymeleaf 템플릿 엔진 사용하여 View를 렌더링 하기위해 의존성 설정합니다.Spring Data JPA : JPA를 사용하기 위해 의존성 설정합니다.( 🚨 아직 Spring Data JPA를 배우지 않았기 때문에 JPA만으로 개발하도록 하겠습니다. )

MariaDB Driver : mariaDB를 사용하기 위해 의존성 설정합니다.Validation : 입력 데이터를 미리 검증(Validation) 하기위해 설정합니다.
Spring Boot DevTools: 애플리케이션을 다시 시작하지 않고 수정된 부분을 반영하여 리로딩 하거나 설정 파일의 변경을 감지하고 반영 하는 등 개발할 때 편의 기능을 제공한다.

 

생성한 프로젝트를 build.gradle을 통해 불러옵니다.바로 실행하게되면 아래와같은 에러가 뜨게되는데 데이터베이스의 소스를 설정해 주지 않아 발생한 에러입니다.

application.yml 데이터베이스 초기 설정을 해줍니다. ( 처음에는 properties지만 yml이 더 보기편해 변경하였습니다.)

추가적으로 개발을 위해 DDL 자동생성 기능을 활성화 하여 어플리케이션 실행 시점에 자동으로 테이블을 만들 수 있도록 합니다.

데이터베이스로 요청하는 sql쿼리문을 로그로 확인 할 수 있도록 로깅 레벨을 debug로 설정해줍니다.

 

✔ Domain 생성, 연관관계 매핑

📁 디렉토리 구조

Member.java

package com.project.board.domain;

import jakarta.persistence.*;
import lombok.Getter;

@Entity
@Getter
public class Member extends BaseEntity{

    @Id @GeneratedValue
    @Column(name = "MEMBER_ID")
    private Long id;

    private String password;

    private String name;

    @Embedded
    private Address address;

    @Enumerated(EnumType.STRING)
    private Gender gender;

}

@Entity : JPA가 Entity클래스라는 것을 알 수 있도록 어노테이션을 사용하여 표시합니다.

@Id : 엔티티의 PrimaryKey값을 설정합니다.

@GeneratedValue : JPA가  Sequence를 사용하여 id값을 설정하도록 합니다

@Embeded : 값 타입의 사용을 표시합니다.

@Enumerated : Enum타입을 표시합니다 (EnumType.STRING)속성을 통해 저장될 때 Enum타입의 이름으로 저장 될 수 있도록 설정합니다.

 

Post.java

package com.project.board.domain;

import jakarta.persistence.*;
import lombok.Getter;
import lombok.Setter;

@Entity
@Getter @Setter
public class Post extends BaseEntity{

    @Id @GeneratedValue
    @Column(name = "POST_ID")
    private Long id;

    private String title;

    private String content;

    @ManyToOne
    @JoinColumn(name = "MEMBER_ID")
    private Member member;

}

@ManyToOne : Post와 Member는 N : 1 즉, ManyToOne 의 관계이기 때문에 어노테이션을 사용하여 관계를 매핑합니다.

@JoinColumn : 대상 테이블(Member)의 PK를 설정 테이블(Post)의 FK로 설정합니다, name 속성은 FK컬럼의 이름을 설정합니다.( 이는 단순히 이름을 설정해주는 것이고 사용할 외래키를 설정하는 것이 아닙니다, 또한 생략하더라도 내부적으로 매핑 규칙과 컬럼명  'Entity이름_id'와 같은 형식으로 정의하는 규칙이 존재하기 때문에 가능합니다.

그리고 명시적으로 컬럼명을 기제함으로써 가독성을 높일 수 있습니다. )

 

📌

모든 프로젝트 소스코드는 깃허브를 통해 올리고 점점 더 추가해 나가겠습니다.

 

GitHub - Rookie8294/project_board: SpringBoot + JPA 를 활용하여 CRUD 게시판 프로젝트

SpringBoot + JPA 를 활용하여 CRUD 게시판 프로젝트. Contribute to Rookie8294/project_board development by creating an account on GitHub.

github.com

 

'Project > SpringBoot+JPA 게시판' 카테고리의 다른 글

[SpringBoot + JPA 게시판 만들기] 게시판 페이징 및 N+1문제 최적화 ( Pageable, join fetch )  (0) 2024.04.25
[SpringBoot + JPA 게시판 만들기] 로그인, 로그아웃 기능 구현 및 타임리프 적용 (+스프링 시큐리티)  (0) 2024.03.31
[SpringBoot + JPA 게시판 만들기] 게시판CRUD 서비스 로직 작성 + 테스트 코드 추가  (0) 2024.03.09
[SpringBoot + JPA 게시판 만들기] 개발 과정에서 만난 고민 builder?, Spring Data JPA?, DTO?  (0) 2024.02.19
[SpringBoot + JPA 게시판 만들기] 요구사항 및 프로젝트 설계 - 1  (0) 2024.02.08
  1. 🔥 프로젝트 생성
  2. ✔ Domain 생성, 연관관계 매핑
  3. 📌
'Project/SpringBoot+JPA 게시판' 카테고리의 다른 글
  • [SpringBoot + JPA 게시판 만들기] 로그인, 로그아웃 기능 구현 및 타임리프 적용 (+스프링 시큐리티)
  • [SpringBoot + JPA 게시판 만들기] 게시판CRUD 서비스 로직 작성 + 테스트 코드 추가
  • [SpringBoot + JPA 게시판 만들기] 개발 과정에서 만난 고민 builder?, Spring Data JPA?, DTO?
  • [SpringBoot + JPA 게시판 만들기] 요구사항 및 프로젝트 설계 - 1
장용석
장용석
공부한 내용을 기록하고 있습니다.
장용석
dot
장용석
전체
오늘
어제
  • 분류 전체보기 (38)
    • Backend (12)
      • JPA (7)
      • Spring (3)
    • CS (2)
    • Algorithm (18)
      • 자료구조 (3)
      • 문제 (10)
    • Project (6)
      • SpringBoot+JPA 게시판 (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

태그

  • 테스트코드
  • 알고리즘
  • JPA
  • 백트래킹
  • Builder
  • 자료구조
  • dfs
  • CRUD
  • 1890번
  • 실버
  • 백준
  • 자바
  • ORM
  • 게시판
  • Java
  • 골드
  • spring data JPA
  • spring
  • 12865번
  • DP

최근 댓글

최근 글

hELLO · Designed By 정상우.
장용석
[SpringBoot + JPA 게시판 만들기] 프로젝트 생성 및 환경 설정 + 엔티티(Entity) 생성 - 2
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.