JPA

๐Ÿƒ‍โ™‚๏ธ ๊ณ„์†ํ•ด์„œ ์—…๋ฐ์ดํŠธ ํ•˜๊ธฐ ๐Ÿƒ‍โ™‚๏ธ 1. ๊ณต์‹๋ฌธ์„œ 2. ์™œ ์‚ฌ์šฉํ• ๊นŒ? 3. ๋™์ž‘๋ฐฉ์‹ 4. ์˜์กด์„ฑ 5. Mapper Inteface ์ž‘์„ฑ 6. Mapper ๊ตฌํ˜„์ฒด ์‚ดํŽด๋ณด๊ธฐ ๊ณต์‹๋ฌธ์„œ https://mapstruct.org/documentation/stable/reference/pdf/mapstruct-reference-guide.pdf MapStruct ์™œ ์‚ฌ์šฉํ• ๊นŒ? ๋ณดํ†ต DB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๊ณ  ์„œ๋น„์Šค๋‹จ์—์„œ ๋กœ์ง์„ ์„ค๊ณ„ ํ•˜๊ธฐ ์œ„ํ•ด Entity -> Dto , Dto -> Entity ์ž‘์—…์„ ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์ด๋Ÿฌํ•œ Mapping ์ž‘์—…์„ ํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋งŽ์ด ์กด์žฌํ•œ๋‹ค ๊ทธ์ค‘ ์•„๋ž˜์˜ ๋งํฌ๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด MapStruct ํผํฌ๋จผ์Šค๊ฐ€ ๋น ๋ฅธ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. https://www.baeldung.com/j..
๐Ÿƒ‍โ™‚๏ธ ๊ณ„์†ํ•ด์„œ ์—…๋ฐ์ดํŠธ ํ•˜๊ธฐ ๐Ÿƒ‍โ™‚๏ธ ๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ 2022/03/29 1. Querydsl ์„ ์™œ ์‚ฌ์šฉํ• ๊นŒ? 2. ์ž‘๋™๋ฐฉ์‹? 3. ์˜์กด์„ฑ 4. Repository ๊ตฌ์กฐ 5. Projection ์˜ ๋Œ€ํ•œ ๊ณ ์ฐฐ ... 6. ๋™์ ์ฟผ๋ฆฌ (BooleanBuilder) 7. ExpressionUtils 8. ์ •๋ ฌ ํƒ€์ž…์— ๋”ฐ๋ฅธ ์ •๋ ฌ ์ฒ˜๋ฆฌ Querydsl ์„ ์™œ ์‚ฌ์šฉํ• ๊นŒ? JPA ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ (@Query ํฌํ•จ) ์กฐํšŒ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค. ๋™์ ์ธ ์ฟผ๋ฆฌ์ธ ๊ฒฝ์šฐ์ธ๋ฐ ์˜ˆ๋ฅผ ๋“ค์–ด ์ฃผ๋ฌธ ํŽ˜์ด์ง€๋ฅผ ๊ฒ€์ƒ‰ ํ•œ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ ์นดํ…Œ๊ณ ๋ฆฌ or ์ƒํ’ˆ๋ช… or ๊ธฐ์—…๋ช… ๋“ฑ๋“ฑ... ์œผ๋กœ ๊ฒ€์ƒ‰ ์กฐ๊ฑด์ด ๋‹ฌ๋ผ์ง€๋Š” ๋ถ€๋ถ„์ด๋‹ค. ๊ทธ๋ž˜์„œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ ๊ฒƒ์ด ๋ฐ”๋กœ Querydsl ํ”„๋ ˆ์ž„์›Œํฌ ์ด๋‹ค. - ํƒ€์ž… ์ฒดํฌ๊ฐ€ ๋ฐ”๋กœ ๊ฐ€๋Šฅํ•˜๋‹ค - ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ..
์—ฐ๊ด€๊ด€๊ณ„ ๋งคํ•‘์‹œ ๊ณ ๋ ค์‚ฌํ•ญ 3๊ฐ€์ง€ 1. ๋‹ค์ค‘์„ฑ 2. ๋‹จ๋ฐฉํ–ฅ, ์–‘๋ฐฉํ–ฅ 3. ์—ฐ๊ด€๊ด€๊ณ„์˜ ์ฃผ์ธ - ๊ฐ์ฒด ์–‘๋ฐฉํ–ฅ ๊ด€๊ณ„๋Š” ์ฐธ์กฐ๊ฐ€ 2๊ตฐ๋ฐ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‘˜์ค‘ ํ…Œ์ด๋ธ”์˜ ์™ธ๋ž˜ ํ‚ค๋ฅผ ๊ด€๋ฆฌํ•  ๊ณณ์„ ์ง€์ •ํ•ด์•ผํ•จ - ์™ธ๋ž˜ ํ‚ค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ฐธ์กฐ - ์ฃผ์ธ์˜ ๋ฐ˜๋Œ€ํŽธ : ์™ธ๋ž˜ ํ‚ค์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Œ, ๋‹จ์ˆœ ์กฐํšŒ ๋‹ค๋Œ€์ผ[N:1] ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•จ ๋‹จ๋ฐ˜ํ–ฅ ์•„๋ž˜์™€ ๊ฐ™์ด [N]์—์„œ ์™ธ๋ž˜ ํ‚ค๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  Team์„ ์กฐํšŒ ํ•˜๊ณ  ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. Team์— ์„œ๋Š” ์กฐํšŒํ•˜์ง€ ๋ชปํ•จ -> Team์—์„œ Member์„ ์กฐํšŒํ•˜๋Š”์ผ์ด ๋นˆ๋ฒˆํ•˜๋‹ค๊ณ  ํ•˜๋ฉด -> ์–‘๋ฐ˜ํ–ฅ ์œผ๋กœ ๋งคํ•‘ํ•ด์ฃผ๋Š”๊ฒŒ ์ข‹์Œ. ์–‘๋ฐ˜ํ–ฅ ๋‹จ๋ฐ˜ํ–ฅ์—์„œ TEAM์ด MEMBER๋ฅผ mapped by ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ MEMBER๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค. (์ฝ๊ธฐ ์ „์šฉ) ์ผ๋Œ€๋‹ค[1:N] 1์ด ์—ฐ๊ด€๊ด€๊ณ„์˜ ์ฃผ์ธ์ด๋‹ค. ๋‹จ๋ฐฉํ–ฅ TEAM ์—์„œ..
๊ต์œก๊ณผ์ • ๋™์•ˆ ์–ธ์ œ ๋งŒ๋“ค์–ด์กŒ๋Š”์ง€, ์–ธ์ œ ์ˆ˜์ •๋˜์—ˆ๋Š”์ง€์— ๋”ฐ๋ฅธ ์œ ์ง€๋ณด์ˆ˜ ์ค‘์š”์„ฑ์„ ๋ฐฐ์šฐ์ง„ ๋ชปํ–ˆ๋‹ค. ์ด์ œ ๋ชจ๋ธ๋งํ•  ๋•Œ ๊ณ ๋ คํ•ด์„œ ์งœ์•ผ๊ฒ ๊ตฐ... ๊ฐ™์€ ๋‚ด์šฉ์ธ๋ฐ ๋งค๋ฒˆ DB์— insert/update์„ ํ•˜๊ธฐ์—๋Š” ์ฝ”๋“œ๊ฐ€ ์—ฌ๊ธฐ์ €๊ธฐ ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜๋‹ˆ๊นŒ ์ƒ์„ฑ๋  ๋•Œ ๊ฐ™์ด ์ƒ์„ฑ๋˜๋ฉด ํŽธ๋ฆฌํ•˜๋‹ค! domain ํด๋”์— BaseTimeEntityํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ๋ชจ๋“  Entity์˜ ์ƒ์œ„ ํด๋ž˜์Šค๊ฐ€ ๋˜๊ฒŒ ํ•˜๋ฉด ๋œ๋‹ค. 1. @MappedSpuerclass ๋ฅผ ์ด์šฉํ•˜๋ฉด JPA Entityํด๋ž˜์Šค๋“ค์ด BaseTimeEntity๋ฅผ ์ƒ์†ํ•  ๊ฒฝ์šฐ ํ•„๋“œ๋“ค๋„ ์ปฌ๋Ÿผ์œผ๋กœ ์ธ์‹ํ•˜๋„๋ก ํ•œ๋‹ค. 2. @EntityListeners(AuditingEntityListener.class)๋กœ ํ•ด๋‹น ํด๋ž˜์Šค์— Auditing๊ธฐ๋Šฅ์„ ํฌํ•จํ•œ๋‹ค. 3. @CreatedDate priva..
์• ์ •์“ฐ
'JPA' ํƒœ๊ทธ์˜ ๊ธ€ ๋ชฉ๋ก