스파르타 코딩 클럽 | 자바 심화 과정/Spring Master (입문 주차)

SpringBoot JPA_#1-1. SpringBoot 환경에서의 JPA_build.gradle 및 application.properties 설정, Entity 클래스

luminous_dev 2025. 2. 4. 01:49

SpringBoot 환경에서는 EntityManagerFactory와 EntityManager 자동 생성

 

실습) 메모장에 JPA 적용해보기

 

1. build.gradle에 JPA 설정 넣어주기

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.4.1'
    id 'io.spring.dependency-management' version '1.1.7'
}

group = 'com.sparta'
version = '0.0.1-SNAPSHOT'

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(17)
    }
}

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {

    // JPA 설정
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'


    // MySQL
    implementation 'mysql:mysql-connector-java:8.0.28'
    //implementation 'org.springframework.boot:spring-boot-starter-data-jdbc' 얘는 이제 지워주기 -> 필요한 것들은 JPA starter 에서 가져옴

    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}

tasks.named('test') {
    useJUnitPlatform()
}

 

그 다음에 이거 눌러주기

 

2. application.properties에 hibernate 설정 넣어주기

 

spring.application.name=sparta_memo_project
spring.datasource.username = root
spring.datasource.password= Gyeong88!!

spring.jpa.hibernate.ddl-auto=update

//Hibernate가 자동으로 만들어주는 SQL을 보기 좋게 만들어줌
spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.use_sql_comments=true

 

 

spring.jpa.hibernate.ddl-auto

create 기존 테이블 삭제 후 다시 생성 
DROP + CREATE
create-drop CREATE와 유사
종료 시점에 테이블을 DROP
update 변경된 부분만 반영
validate Entity와 테이블이 정상 매핑되었는지 확인
있는 Entity와 테이블을 매핑했는지.. 
none 아무것도 하지 않음 

 


이전에 persistence.xml 설정해주고 MemoEntity 위치까지 알려줘서

그 정보를 갖고 EntityManagerFactory를 만들었다면,

 

Boot 환경에서는 application properties에 다음과 같은 정보를 주면

이 정보를 기반으로 자동으로 EntityManagerFactory와 EntityManager를 만듦

spring.application.name=sparta_memo_project
spring.datasource.username = root
spring.datasource.password= Gyeong88!!

spring.jpa.hibernate.ddl-auto=update

spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.use_sql_comments=true

 

 

3. Memo.java → Entity Class로 바꾸기 

Memo.java

package com.sparta.sparta_memo_project.entity;

import com.sparta.sparta_memo_project.dto.MemoRequestDto;
import jakarta.persistence.*;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@Entity // JPA가 관리할 수 있는 Entity 클래스 지정
@Getter
@Setter
@Table(name = "memo") // 매핑할 테이블의 이름을 지정
@NoArgsConstructor //기본 생성자 생성
public class Memo {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @Column(name = "username", nullable = false)
    private String username;
    @Column(name = "contents", nullable = false, length = 500)
    private String contents;

    public Memo(MemoRequestDto requestDto) {
        this.username = requestDto.getUsername();
        this.contents = requestDto.getContents();
    }

    public void update(MemoRequestDto requestDto) {
        this.username = requestDto.getUsername();
        this.contents = requestDto.getContents();
    }
}