๋ฐ˜์‘ํ˜•
[JPA] ์—ฐ๊ด€๊ด€๊ณ„์˜ ์ฃผ์ธ

์†Œ์Šค ์ฝ”๋“œ๋Š” ์—ฌ๊ธฐ ์žˆ์Šต๋‹ˆ๋‹ค. (commit hash: e336ad7) > git clone https://github.com/lcalmsky/jpa > git checkout e336ad7 Overview ์–‘๋ฐฉํ–ฅ ์—ฐ๊ด€๊ด€๊ณ„๋ฅผ ๋งบ์„ ๋•Œ ๊ด€๋ฆฌ์˜ ์ฃผ์ฒด์ธ ์—ฐ๊ด€๊ด€๊ณ„ ์ฃผ์ธ์— ๋Œ€ํ•ด ์•Œ์•„๋ด…๋‹ˆ๋‹ค. ์—ฐ๊ด€๊ด€๊ณ„์˜ ์ฃผ์ธ(Owner) ์–‘๋ฐฉํ–ฅ ์—ฐ๊ด€๊ด€๊ณ„๋ฅผ ๋งบ์„ ๋•Œ ๊ทœ์น™์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ฐ์ฒด์˜ ๋‘ ๊ด€๊ณ„์ค‘ ํ•˜๋‚˜๋ฅผ ์—ฐ๊ด€๊ด€๊ณ„์˜ ์ฃผ์ธ์œผ๋กœ ์ง€์ • ex) Member ๊ฐ์ฒด๊ฐ€ ๊ฐ€์ง„ Team์ด ์ฃผ์ธ์ด ๋ ์ง€ Team ๊ฐ์ฒด๊ฐ€ ๊ฐ€์ง„ Members๊ฐ€ ์ฃผ์ธ์ด ๋ ์ง€ ์ •ํ•จ ์—ฐ๊ด€๊ด€๊ณ„์˜ ์ฃผ์ธ๋งŒ FK๋ฅผ ๊ด€๋ฆฌ(๋“ฑ๋ก, ์ˆ˜์ • ๋“ฑ) ์ฃผ์ธ์ด ์•„๋‹Œ ์ชฝ์€ ์ฝ๊ธฐ๋งŒ ๊ฐ€๋Šฅ ์ฃผ์ธ์ด ์•„๋‹Œ ์ชฝ์—์„œ mappedBy ์†์„ฑ์œผ๋กœ ์ฃผ์ธ ์ง€์ • ๊ทธ๋ ‡๋‹ค๋ฉด ๋‘ ๊ด€๊ณ„ ์ค‘ ์–ด๋–ค ๊ฒƒ์„ ์ฃผ์ธ์œผ๋กœ ์ง€์ •ํ•˜๋Š” ๊ฒŒ ํƒ€..

JPA 2022. 6. 30. 10:30
[JPA] ๋‹จ๋ฐฉํ–ฅ ์—ฐ๊ด€๊ด€๊ณ„

์†Œ์Šค ์ฝ”๋“œ๋Š” ์—ฌ๊ธฐ ์žˆ์Šต๋‹ˆ๋‹ค. (commit hash: e336ad7) > git clone https://github.com/lcalmsky/jpa > git checkout e336ad7 Overview ๋‹จ๋ฐฉํ–ฅ ์—ฐ๊ด€๊ด€๊ณ„๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. JPA๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ํฌ์ŠคํŒ…ํ•˜๋Š” ๊ธ€์ด์ง€๋งŒ ์Šคํ”„๋ง ๋‚ด์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•„ ์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ๋กœ ๊ตฌ์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋‚ด์šฉ์€ ๋‹ค๋ฅธ ํฌ์ŠคํŒ…์—๋„ ๊ทธ๋™์•ˆ ๋งŽ์ด ์ž‘์„ฑํ•˜์˜€๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๋žตํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๊ฐ์ฒด ์ง€ํ–ฅ ๋ชจ๋ธ๋ง ์ €๋ฒˆ ํฌ์ŠคํŒ…์—์„œ์™€ ๋‹ค๋ฅด๊ฒŒ ๊ฐ์ฒด์ง€ํ–ฅ์ ์œผ๋กœ ๋ชจ๋ธ๋งํ•œ ๋ชจ์Šต์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ฐ์ฒด ์—ฐ๊ด€๊ด€๊ณ„ Member ๊ฐ์ฒด๊ฐ€ Team ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๊ธฐ ์œ„ํ•ด์„  teamId๋ฅผ ๊ฐ€์ง€๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ Team ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ” ์—ฐ๊ด€๊ด€๊ณ„ ์ฝ”๋“œ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ๋‹ค์Œ๊ณผ..

JPA 2022. 6. 28. 10:30
[JPA] ์‚ฌ์šฉ์‹œ ์—ฐ๊ด€๊ด€๊ณ„๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 

Overview ๊ฐ์ฒด์™€ ํ…Œ์ด๋ธ”๊ณผ ์—ฐ๊ด€๊ด€๊ณ„์˜ ์ฐจ์ด๋ฅผ ์ดํ•ดํ•˜๊ธฐํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ ์‹œ๋‚˜๋ฆฌ์˜ค ๋‹จ๋ฐฉํ–ฅ ์—ฐ๊ด€๊ด€๊ณ„์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ž˜์™€ ๊ฐ™์ด ์„ธ ๊ฐ€์ง€ ์ƒํ™ฉ์„ ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ํšŒ์›๊ณผ ํŒ€ ํšŒ์›์€ ํ•˜๋‚˜์˜ ํŒ€์—๋งŒ ์†Œ์†๋  ์ˆ˜ ์žˆ์Œ ํšŒ์›:ํŒ€=N:1 ์—ฐ๊ด€๊ด€๊ณ„๊ฐ€ ํ•„์š”ํ•œ ์ด์œ  ์˜ˆ์ œ ์‹œ๋‚˜๋ฆฌ์˜ค์˜ ์ƒํ™ฉ์„ ๋‹ค์ด์–ด๊ทธ๋žจ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ฐ์ฒด ์—ฐ๊ด€๊ด€๊ณ„ ํ…Œ์ด๋ธ” ์—ฐ๊ด€๊ด€๊ณ„ ํ…Œ์ด๋ธ”์— ๋งž์ถฐ์„œ ๊ฐ์ฒด๋ฅผ ๋ชจ๋ธ๋งํ•˜๊ฒŒ๋˜๋ฉด ์„œ๋กœ ์•„๋ฌด ๊ด€๊ณ„๊ฐ€ ์—†๋Š” ๊ฐ์ฒด๊ฐ€ ๋˜์–ด๋ฒ„๋ฆฝ๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ”๋ผ๋ฆฌ๋Š” FK๋ฅผ ์ด์šฉํ•ด ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์ง€๋งŒ ๊ฐ์ฒด๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด์˜ ID๋ฅผ ๊ฐ–๊ณ ์žˆ๋‹ค๊ณ ํ•ด๋„ ์„œ๋กœ ๊ด€๊ณ„๊ฐ€ ์žˆ๋‹ค๊ณ  ๋ณด๊ธด ํž˜๋“ญ๋‹ˆ๋‹ค. ์ด๋ฅผ ์ž๋ฐ” ์ฝ”๋“œ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. package com.tistory.jaimenote.jpa.domain.entity; import javax.pe..

JPA 2022. 6. 25. 10:30
์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA - Auditing

๋ชจ๋“  ์†Œ์Šค ์ฝ”๋“œ๋Š” ์—ฌ๊ธฐ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. Entity๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•  ๋•Œ, ๊ฐ๊ฐ์˜ ์‹œ๊ฐ„๊ณผ ๋‹ด๋‹น์ž๋ฅผ ์ถ”์ ํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์‹ค๋ฌด์—์„œ ์ด๋ ฅ์„ ๋‚จ๊ธฐ๊ธฐ์œ„ํ•ด ๋งŽ์ด ์“ฐ์ด๋Š” ๊ธฐ๋Šฅ์ธ๋ฐ์š”, ์ด๋ ‡๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„  Entity๋งˆ๋‹ค ํ•„์š”์—๋”ฐ๋ผ ์ƒ์„ฑ ์‹œ๊ฐ„, ์ˆ˜์ • ์‹œ๊ฐ„, ์ƒ์„ฑํ•œ ์‚ฌ๋žŒ, ์ˆ˜์ •ํ•œ ์‚ฌ๋žŒ ์ด ๋„ค ๊ฐ€์ง€ ์†์„ฑ์„ ๊ฐ€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. JPA๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ Entity๊ฐ€ ๊ฒฐ๊ตญ ๊ฐ์ฒด์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ณตํ†ต์ ์ธ ์†์„ฑ์„ ๋ชจ๋‘ ๊ฐ€์ง€๋Š” ํด๋ž˜์Šค๋ฅผ ์„ค๊ณ„ํ•˜๋ฉด ๊ฐ„๋‹จํžˆ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ์š”, ๊ทธ ๋ฐฉ๋ฒ•์„ ํ•œ ๋ฒˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. BaseEntity ์ •์˜ ์ƒ์„ฑ ์‹œ๊ฐ„, ์ˆ˜์ • ์‹œ๊ฐ„์„ ๊ฐ€์ง€๋Š” Entity๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. package io.lcalmsky.springdatajpa.domain.entity; import javax.persistence.Colu..

JPA 2021. 7. 9. 12:00
์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA - Custom Repository Best Practice

์‚ฌ์šฉ์ž ์ •์˜ Repository Best Practice ์‚ฌ์šฉ์ž ์ •์˜ Repository๋ฅผ ๋งŒ๋“ค ๋•Œ ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ์ž ์ •์˜ Repository๋ผ๊ณ  ํ•จ์€, JpaRepository๋ฅผ ์ƒ์†ํ•ด์„œ ์ฟผ๋ฆฌ ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ตฌํ˜„์ฒด์—์„œ ์ง์ ‘ JPA๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ MyBatis, JdbcTemplate, QueryDSL ๋“ฑ์„ ์ด์šฉํ•ด ๊ตฌํ˜„ํ•œ ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ƒ๋Œ€์ ์œผ๋กœ(?) ๋‚˜์œ ์˜ˆ์‹œ Entity๊ฐ€ Member, Team์ด ์กด์žฌํ•˜๊ณ  Member๋Š” JpaRepository๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  Team์€ ์‚ฌ์šฉ์ž ์ •์˜ Repository๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ๊ทธ๋ƒฅ ๊ตฌํ˜„ํ•ด๋„ ์ƒ๊ด€์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ MemberRepository๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ CustomMemberRepository๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด์„œ S..

JPA 2021. 7. 7. 09:42
๋ฐ˜์‘ํ˜•
๊ณต์ง€์‚ฌํ•ญ
Total
128,422
Today
0
Yesterday
526
๋งํฌ
«   2022/10   »
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          
๊ธ€ ๋ณด๊ด€ํ•จ