728x90
๋ฐ˜์‘ํ˜•
์Šคํ”„๋ง ๋ฐ์ดํ„ฐ 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
์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA - ๋ฒŒํฌ ์—…๋ฐ์ดํŠธ

๋ชจ๋“  ์†Œ์Šค ์ฝ”๋“œ๋Š” ์—ฌ๊ธฐ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. JPA๋Š” ๋ณดํ†ต ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ ๋ณ€๊ฒฝํ•˜๋ฉด ๋ณ€๊ฒฝ ๊ฐ์ง€(dirty checking)๋ฅผ ํ†ตํ•ด DB์— ์—…๋ฐ์ดํŠธ ํ€ด๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์—…๋ฐ์ดํŠธ๋“ค์€ ๊ฑด ๋ณ„๋กœ select ์ดํ›„ update๊ฐ€ ์ด๋ฃจ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์ฒœ ๊ฑด์„ ์—…๋ฐ์ดํŠธ ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ ๋น„ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. JPA๋ฅผ ์‚ฌ์šฉํ•ด์„œ๋„ ์ˆ˜ ์ฒœ, ์ˆ˜ ๋งŒ ๊ฑด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ์—…๋ฐ์ดํŠธ ํ•˜๋Š” ๋ฒŒํฌ ์—…๋ฐ์ดํŠธ(Bulk Update)์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. @Modifying ์• ๋„ˆํ…Œ์ด์…˜ ๋ฒŒํฌ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด์„  @Query์™€ ํ•จ๊ป˜ @Modifying ์• ๋„ˆํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜์ด๊ฐ€ N์‚ด ์ด์ƒ์ธ ์ „์ฒด ํšŒ์›์˜ ๋‚˜์ด๋ฅผ 1์”ฉ ์ฆ๊ฐ€์‹œ์ผœ์•ผ ํ•œ๋‹ค๋Š” ์š”๊ตฌ์‚ฌํ•ญ์ด ์กด์žฌํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ์ด๋ฅผ ๊ตฌํ˜„ํ•œ ์†Œ์Šค ์ฝ”๋“œ ์ž…๋‹ˆ๋‹ค. package i..

JPA 2021. 7. 1. 20:28
728x90
๋ฐ˜์‘ํ˜•
๊ณต์ง€์‚ฌํ•ญ
Total
71,750
Today
113
Yesterday
133
๋งํฌ
«   2022/05   »
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
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        
๊ธ€ ๋ณด๊ด€ํ•จ