JPA (5) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ Entity Life Cycle reference ์คํํธ ์คํ๋ง ๋ถํธ - ๊ตฌ๋ฉ๊ฐ๊ฒ ์ฝ๋ฉ๋จ New(๋น์์) Java์์ญ์ ๊ฐ์ฒด๋ง ์กด์ฌํ๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๋๋ ์ ์ด ์๋ ์ํ. ์ํฐํฐ ๋งค๋์ ์ ๊ด๋ฆฌํ์ ์๋ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ ์์ํ Java ๊ฐ์ฒด Managed(์์) ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋๊ณ , ๋ฉ๋ชจ๋ฆฌ์์์๋ ๊ฐ์ ์ํ๋ก ์กด์ฌํ๋ ์ํ. ๊ฐ์ฒด๋ ์์ ์ปจํ ์คํธ ๋ด์ ๋ค์ด๊ฐ๊ฒ ๋๊ณ , id(PK)๊ฐ์ ํตํด์ ํ์ํ ์ํฐํฐ ๊ฐ์ฒด๋ฅผ ๊บผ๋ด ์ฌ์ฉํ ์ ์๊ฒ ๋ฉ๋๋ค. Removed(์ญ์ ) ๋ฐ์ดํฐ๋ฒ ์ด์ค์์์ ์ญ์ ๋ ์ํ. ๊ฐ์ฒด๋ ๋ ์ด์ ์์ ์ปจํ ์คํธ์ ์กด์ฌํ์ง ์์ต๋๋ค. Detached(์ค์์) ์์ ์ปจํ ์คํธ์์ ์ํฐํฐ ๊ฐ์ฒด๋ฅผ ๊บผ๋ด์ ์ฌ์ฉํ๋ ์ํ. ์ค์์ ์ํ์ ๊ฐ์ฒด๋ ๊ณ ์ ํ id(PK)๋ฅผ ๊ฐ์ง๊ณ ์์ง๋ง, ์์ง ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋๊ธฐํ๊ฐ ์ด๋ฃจ์ด์ง์ง ์์.. Entity, Entity Manager reference ์คํํธ ์คํ๋ง ๋ถํธ - ๊ตฌ๋ฉ๊ฐ๊ฒ ์ฝ๋ฉ๋จ Entity Entity ์ฉ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์์ ๋ฐ์ดํฐ๋ก ๊ด๋ฆฌํ๋ ๋์์ ์๋ฏธํ๋ค. ์๋ฅผ ๋ค์ด, ‘์ํ’, ‘ํ์ฌ’, ’์ง์’ ๋ฑ๊ณผ ๊ฐ์ด ๋ช ์ฌ์ด๋ฉด์ ์ ๋ฌด์ ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ฅผ ์ํฐํฐ๋ก ๊ท์ ํ ์ ์๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ์ํฐํฐ๋ฅผ ์ํด์ ์ผ๋ฐ์ ์ผ๋ก ํ ์ด๋ธ์ ์ค๊ณํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ค. ์ด๋ ๊ฒ ์ถ๊ฐ๋ ๋ฐ์ดํฐ๋ ‘์ธ์คํด์ค’ ํน์ ‘๋ ์ฝ๋’๋ผ๋ ์ฉ์ด๋ก ๋ถ๋ฆฐ๋ค. Entity Manager ์ฌ๋ฌ Entity๋ค์ ๊ด๋ฆฌํ๋ ๊ฐ์ฒด ์์ ์ด ๊ด๋ฆฌํ๋ ๊ฐ์ฒด๋ค์ ‘์์ ์ปจํ ์คํธ(persistence context)’๋ด์ ๋ณด๊ดํ๊ณ ๊ฐ์ฒด์ life cycle์ ๊ด๋ฆฌํ๋ค. Data source ์ค์ , JPA ๊ด๋ จ ์ค์ reference ์คํํธ ์คํ๋ง ๋ถํธ - ๊ตฌ๋ฉ๊ฐ๊ฒ ์ฝ๋ฉ๋จ ์คํ๋ง ๋ถํธ ๊ฐ๋ ๊ณผ ํ์ฉ - ๋ฐฑ๊ธฐ์ application.properties ๋๋ application.yml ํ์ผ์ ์ค์ ํ ์ ์๋ค. DataSource ์ค์ ํ๊ธฐ JPA๋ MySQL๋ฑ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ถ๊ฐ๋๋ฉด Spring Boot๋ ์๋์ผ๋ก ์ค์ ์ ์ธ์ํ๊ธฐ ๋๋ฌธ์ ๋ฐ๋์ DataSource ์ค์ ์ด ํ์ํ๋ค. spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/__dbname__?useSSL=false&serverTimezone=Asia/Seoul spring.datasource.user.. JPA Annotation reference ์คํํธ ์คํ๋ง ๋ถํธ - ๊ตฌ๋ฉ๊ฐ๊ฒ ์ฝ๋ฉ๋จ www.datanucleus.org/products/accessplatform/jpa/annotations.html code ๊ธฐ๋ณธ์ ์ผ๋ก lombok ์ ์ฌ์ฉํ์์ต๋๋ค. import ๋ฌธ๋ ๊ฐ์ด ๋ณผ ์ ์๋๋ก ์ฒจ๋ถํ์์ต๋๋ค. package org.zerock.domain; import java.sql.Timestamp; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; import org.h.. JPA reference ์คํํธ ์คํ๋ง ๋ถํธ - ๊ตฌ๋ฉ๊ฐ๊ฒ ์ฝ๋ฉ๋จ ์คํ๋ง ๋ถํธ ๊ฐ๋ ๊ณผ ํ์ฉ - ๋ฐฑ๊ธฐ์ ๋ JPA ์๊ฐ ๊ฐ์ฒด์ ๊ตฌ์กฐ์ ํ ์ด๋ธ์ ๊ตฌ์กฐ๊ฐ ์ ์ฌํ๋ค๋ ๊ฒ์์ ์์ JDBC๋ก ์ฒ๋ฆฌํ๋ ์์ ์ ํ๋์ ์ถ์ํ๋ ๊ณ์ธต ์ถ๊ฐ ORM, JPA, Spring Data JPA์ ๊ด๊ณ ORM(Object Relational Mapping) ๊ฐ์ฅ ์์ ๊ฐ๋ ์ ํด๋นํ๋ค. ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ RDBMS๊ตฌ์กฐ์ ์ฐ๊ฒฐ์์ผ ๊ฐ๋ฐํ์๋ ์ฌ์์ ๋ดํฌํ๊ณ ์๋ค. JPA(Java Persistence API) ORM์ ์ํ ์๋ฐ (EE) ํ์ค์ด๋ค. Java์ธ์ด๋ฅผ ์ด์ฉํด์ ORM์ ๊ตฌํํ๋ ค๊ณ ํ ๋ ์ง์ผ์ผ ํ๋ ์คํ์ด๋ผ๊ณ ํ ์ ์๋ค. Hibernate JPA์ ๊ตฌํ์ฒด๋ค ์ค์์ ํ๋์ ์ ํ์ด๊ณ spring boot์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ์ ์ผ๋ก Hibe.. ์ด์ 1 ๋ค์