스파르타 코딩 클럽 | 자바 심화 과정/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();
}
}