๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋กjpa (8)

Tech Log ๐Ÿ› ๏ธ

[jpa] OSIV ์„ฑ๋Šฅ ์ตœ์ ํ™”

OSIV๋ž€ OSIV(Open Session In View)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ตœ์ดˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ปค๋„ฅ์…˜ ์‹œ์ž‘ ์‹œ์ ๋ถ€ํ„ฐ API ์‘๋‹ต์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์™€DB ์ปค๋„ฅ์…˜์„ ์œ ์ง€ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•จ์œผ๋กœ์จ ๋ทฐ์™€ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ์ง€์—ฐ ๋กœ๋”ฉ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. *ํŠธ๋žœ์žญ์…˜์ด ์‹œ์ž‘ํ• ๋•Œ DB์ปค๋„ฅ์…˜์„ ํš๋“ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ด ์ „๋žต์€ ํฐ ๋‹จ์ ์ด ์žˆ๋Š”๋ฐ, ๋„ˆ๋ฌด ์˜ค๋žœ ์‹œ๊ฐ„ DB ์ปค๋„ฅ์…˜์„ ์œ ์ง€ํ•จ์œผ๋กœ ์ธํ•ด ๋ฆฌ์†Œ์Šค ๋ถ€์กฑ ์žฅ์• ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.๋”ฐ๋ผ์„œ ์ƒํ™ฉ์— ๋งž๋Š” OSIV ์ „๋žต์ด ํ•„์š”ํ•˜๋‹ค. OSIV ๋™์ž‘ ๋ฐฉ์‹ jpa์—์„œ๋Š” OSIV์˜ ๊ธฐ๋ณธ๊ฐ’์„ true (์‚ฌ์šฉ)์œผ๋กœ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค. 1. ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ์„œ๋ธ”๋ฆฟ ํ•„ํ„ฐ๋‚˜ ์Šคํ”„๋ง ์ธํ„ฐ์…‰ํ„ฐ์—์„œ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. 2. ์„œ๋น„์Šค ๊ณ„์ธต์—์„œ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋‘” ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๋กœ ํŠธ๋žœ์žญ์…˜์„ ์‹œ์ž‘ํ•œ..

jpa 2023. 3. 5. 18:03
[jpa] ์ปฌ๋ ‰์…˜ ์กฐํšŒ ์ตœ์ ํ™” - 2

์ปฌ๋ ‰์…˜ ์กฐํšŒ ์ตœ์ ํ™” - 1 ์—์„œ๋Š” ์—”ํ‹ฐํ‹ฐ๋ฅผ ์กฐํšŒํ•œ ํ›„์— DTO๋กœ ๋ณ€ํ™˜์‹œํ‚ค๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•˜์˜€์ง€๋งŒ, ์ด๋ฒˆ ์ฑ•ํ„ฐ์—์„œ๋Š” JPA ์—์„œ DTO๋ฅผ ์ง์ ‘ ์กฐํšŒํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•œ๋‹ค. JPA์—์„œ DTO ์ง์ ‘ ์กฐํšŒ DTO๋ฅผ ์กฐํšŒํ•  ๋•Œ, ToOne ๊ด€๊ณ„๋“ค์„ ๋จผ์ € ์กฐํšŒํ•˜๊ณ  ToMany ๊ด€๊ณ„๋“ค์€ ๋ณ„๋„๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์ด ์ข‹๋‹ค.ToOne ๊ด€๊ณ„๋ฅผ ๋จผ์ € ์ฒ˜๋ฆฌํ•˜๋Š” ์ด์œ ๋Š” Row ์ˆ˜์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.ํ•˜์ง€๋งŒ ToMany ๊ด€๊ณ„๋Š” Row์ˆ˜๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๋ฏ€๋กœ(๋ฐ์ดํ„ฐ ๋ปฅํŠ€๊ธฐ) ๋ณ„๋„๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ํŽธ์ด ์ข‹๋‹ค. private List findOrders() {return em.createQuery( "select new jpabook.jpashop.repository.order.query.OrderQueryDto(o.id, m.name, o.or..

jpa 2023. 3. 1. 02:16
[jpa] ์ง€์—ฐ๋กœ๋”ฉ๊ณผ ์กฐํšŒ ์„ฑ๋Šฅ ์ตœ์ ํ™”

์ด์ „ ๊ฐ•์˜ ๋‚ด์šฉ ์—”ํ‹ฐํ‹ฐ๋ฅผ Request Body ์— ์ง์ ‘ ๋งคํ•‘ํ•  ๊ฒฝ์šฐ ๋ฌธ์ œ์  - ์—”ํ‹ฐํ‹ฐ์— ํ”„๋ ˆ์  ํ…Œ์ด์…˜ , API ๊ฒ€์ฆ์„ ์œ„ํ•œ ๋กœ์ง์ด ์ถ”๊ฐ€๋œ๋‹ค. ํ•˜์ง€๋งŒ ์‹ค๋ฌด์—์„œ๋Š” ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ด์šฉํ•œ ์—ฌ๋Ÿฌ API๋“ค์ด ๋งŒ๋“ค์–ด์ง€๋Š”๋ฐ , ๊ฐ๊ฐ์˜ API๋“ค์„ ์œ„ํ•œ ๋ชจ๋“  ์š”์ฒญ์‚ฌํ•ญ๋“ค์„ ๋‹ด๊ธฐ๋Š” ์–ด๋ ต๋‹ค. ๋˜ํ•œ ์—”ํ‹ฐํ‹ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด API ์ŠคํŽ™์ด ๋ณ€ํ•œ๋‹ค ! - ๋”ฐ๋ผ์„œ ์—”ํ‹ฐํ‹ฐ๋ฅผ Requst Body ์— ์ง์ ‘ ๋งคํ•‘์‹œํ‚ค๋Š” ๊ฒƒ์ด ์•„๋‹Œ , API ๋ฅผ ์œ„ํ•œ DTO๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด์„œ ์ด๊ฒƒ์„ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›์•„์•ผํ•œ๋‹ค. - DTO๋ฅผ ํ†ตํ•ด์„œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐ›์œผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์žฅ์ ์ด ์žˆ๋‹ค. 1. ์—”ํ‹ฐํ‹ฐ์™€ ํ”„๋ ˆ์  ํ…Œ์ด์…˜์„ ์œ„ํ•œ ๋กœ์ง์„ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. - ์ด์ œ ๋” ์ด์ƒ ์—”ํ‹ฐํ‹ฐ๊ฐ€ ์—ฌ๋Ÿฌ API๋“ค์„ ์œ„ํ•œ ์š”์ฒญ์‚ฌํ•ญ๋“ค์„ ๋‹ด์„ ํ•„์š”๊ฐ€ ์—†๋‹ค. 2. ์—”ํ‹ฐํ‹ฐ์™€ API ์ŠคํŽ™์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•  ์ˆ˜ ..

jpa 2023. 2. 25. 02:32
[jpa] ๋‹ค์–‘ํ•œ ์—ฐ๊ด€๊ด€๊ณ„ ๋งตํ•‘ ์ •๋ฆฌ

์—ฐ๊ด€๊ด€๊ณ„ ๋งตํ•‘ ์‹œ ๊ณ ๋ คํ•ด์•ผ ํ•  3๊ฐ€์ง€ 1. ๋‹ค์ค‘์„ฑ ex) ๋‹ค๋Œ€์ผ , ์ผ๋Œ€์ผ 2. ๋‹จ๋ฐฉํ–ฅ , ์–‘๋ฐฉํ–ฅ - ํ…Œ์ด๋ธ”์€ ์™ธ๋ž˜ํ‚ค ํ•˜๋‚˜๋กœ ์–‘์ชฝ ์กฐ์ธ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ , ๊ฐ์ฒด๋Š” ์ฐธ์กฐ์šฉ ํ•„๋“œ๊ฐ€ ์žˆ๋Š” ๊ณณ์œผ๋กœ๋งŒ ์ฐธ์กฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. - ๋”ฐ๋ผ์„œ ์–‘๋ฐฉํ–ฅ ๊ด€๊ณ„๋ผ๋Š” ๊ฒƒ์€ ์ฐธ์กฐ์šฉ ํ•„๋“œ๊ฐ€ ์–‘์ชฝ ๋ชจ๋‘ ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ ๋งํ•œ๋‹ค. 3. ์—ฐ๊ด€ ๊ด€๊ณ„์˜ ์ฃผ์ธ - ๊ฐ์ฒด๋Š” ํ…Œ์ด๋ธ”๊ณผ ๋‹ฌ๋ฆฌ ์ฐธ์กฐ๊ฐ€ ๋‘ ๊ตฐ๋ฐ์—์„œ ๋งŒ๋“ค์–ด ์–‘๋ฐฉํ–ฅ ๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•œ๋‹ค. - ์ฐธ์กฐ์šฉ ํ•„๋“œ๊ฐ€ ์–‘์ชฝ์— ์žˆ๋Š” ์–‘๋ฐฉํ–ฅ ๊ด€๊ณ„์—์„œ ์™ธ๋ž˜ํ‚ค๋ฅผ ๊ด€๋ฆฌํ•  "์—ฐ๊ด€ ๊ด€๊ณ„์˜ ์ฃผ์ธ"์ด ํ•„์š”ํ•˜๋‹ค. a. ์—ฐ๊ด€ ๊ด€๊ณ„์˜ ์ฃผ์ธ - ์™ธ๋ž˜ํ‚ค๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค. b. ์ฃผ์ธ์˜ ๋ฐ˜๋Œ€ํŽธ - ์™ธ๋ž˜ํ‚ค์˜ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ๋‹จ์ˆœ ์กฐํšŒ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค !! ์—ฐ๊ด€ ๊ด€๊ณ„์˜ ์ข…๋ฅ˜ 1. ๋‹ค๋Œ€์ผ [n:1] - ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค. 1-1 . ๋‹ค๋Œ€์ผ ์–‘๋ฐฉํ–ฅ - ์™ธ๋ž˜ํ‚ค๊ฐ€ ์žˆ๋Š”..

jpa 2023. 2. 19. 18:42