Spring/๐Ÿ”ฅ[spring]์ฝ”๋“œ๋กœ ๋ฐฐ์šฐ๋Š” ์Šคํ”„๋ง ๋ถ€ํŠธ ์›น ํ”„๋กœ์ ํŠธ_๊ตฌ๋ฉ๊ฐ€๊ฒŒ ์ฝ”๋”ฉ๋‹จ

4.2 ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋Š” ๋‚ ์งœ/์‹œ๊ฐ„ ์„ค์ •

1son 2023. 2. 7. 09:59

์—”ํ‹ฐํ‹ฐ์™€ ๊ด€๋ จ๋œ ์ž‘์—…์„ ํ•˜๋‹ค ๋ณด๋ฉด, ๋ฐ์ดํ„ฐ์˜ ๋“ฑ๋ก ์‹œ๊ฐ„๊ณผ ์ˆ˜์ •์‹œ๊ฐ„๊ณผ ๊ฐ™์ด

์ž๋™์œผ๋กœ ์ถ”๊ฐ€๋˜๊ณ  ๋ณ€๊ฒฝ๋˜์–ด์•ผ ํ•˜๋Š” ์นผ๋Ÿผ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ด๋ฅผ ๋งค๋ฒˆ ํ”„๋กœ๊ทธ๋žจ ์•ˆ์—์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ์ผ์€ ๋ฒˆ๊ฑฐ๋กญ๊ธฐ ๋•Œ๋ฌธ์—

์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์–ด๋…ธํ…Œ์ด์…˜์„ ์ด์šฉํ•ด์„œ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

 

 

@MappedSuperclass๋ผ๋Š” ํŠน๋ณ„ํ•œ ์–ด๋…ธํ…Œ์ด์…˜์ด ์ ์šฉ๋˜๋Š”๋ฐ 

ํ•ด๋‹น ์–ด๋…ธํ…Œ์ด์…˜์ด ์ ์šฉ๋œ ํด๋ž˜์Šค๋Š” ํ…Œ์ด๋ธ”๋กœ ์ƒ์„ฑ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 

 

์‹ค์ œ ํ…Œ์ด๋ธ”์€ BaseEntityํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•œ ์—”ํ‹ฐํ‹ฐ์˜ ํด๋ž˜์Šค๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. 

 

JPA์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์—”ํ‹ฐํ‹ฐ ๊ฐ์ฒด๋“ค์€ ์˜์† ์ฝ˜ํ…์ŠคํŠธ๋ผ๋Š” ๊ณณ์—์„œ ๊ด€๋ฆฌ๋˜๋Š” ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. 

์ด ๊ฐ์ฒด๋“ค์ด ๋ณ€๊ฒฝ๋˜๋ฉด ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์— ์ด๋ฅผ ๋ฐ˜์˜ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. 

 

JPA๋ฐฉ์‹์—์„œ๋Š” ํ•ด๋‹น ์—”ํ‹ฐํ‹ฐ ๊ฐ์ฒด๋Š” ์œ ์ง€๋˜๊ณ  ํ•„์š”ํ•  ๋•Œ ๊บผ๋‚ด์„œ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด ๋ฉ๋‹ˆ๋‹ค. 

๋”ฐ๋ผ์„œ ์ด๋Ÿฌํ•œ ์—”ํ‹ฐํ‹ฐ ๊ฐ์ฒด์—๋Š” ์–ด๋–ค ๋ณ€ํ™”๊ฐ€ ์ผ์–ด๋‚˜๋Š” ๊ฒƒ์„ ๊ฐ์ง€ํ•˜๋Š” ๋ฆฌ์Šค๋„ˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

JPA๋‚ด๋ถ€์—์„œ ์—”ํ‹ฐํ‹ฐ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ/๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ์„ ๊ฐ์ง€ํ•˜๋Š” ์—ญํ• ์€ AuditingEntityListener๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. 

์ด๋ฅผ ํ†ตํ•ด์„œ regDate, modDate์— ์ ์ ˆํ•œ ๊ฐ’์ด ์ง€์ •๋ฉ๋‹ˆ๋‹ค. 

 

JPA๋ฅผ ์ด์šฉํ•˜๋ฉด์„œ AuditingEntityListener๋ฅผ ํ™œ์„ฑํ™”์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ”„๋กœ์ ํŠธ์—

@EnableJpaAuditing ์„ค์ •์„ ์ถ”๊ฐ€ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. 

4.3 ์—”ํ‹ฐํ‹ฐ ํด๋ž˜์Šค์™€ Querydsl์„ค์ •

 

 

๊ธฐ์กด์˜ ์—”ํ‹ฐํ‹ฐ ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ• ๋•Œ์™€ ๋‹ฌ๋ฆฌ BaseEntityํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•ด์„œ ์ž‘์„ฑํ•˜๋Š” ์ ์ด ์ข€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. 

 

 

์ž˜ ๋งŒ๋“ค์–ด์ง„ ๊ฒƒ ํ™•์ธ

 

GuestbookRepository๋Š” ๋จผ์ € ๊ธฐ์กด๊ณผ ๋™์ผํ•˜๊ฒŒ JpaRepository๋ฅผ ์ƒ์†๋ฐ›๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

 

 

4.3.1 ๋™์  ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ Querydsl ์„ค์ •

๋ณต์žกํ•œ ์กฐํ•ฉ์„ ์ด์šฉํ•˜๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ๋งŽ์€ ์ƒํ™ฉ์—์„œ๋Š” ๋™์ ์œผ๋กœ ์ฟผ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ด์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. 

Querydsl์€ ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. 

 

๋ณต์žกํ•œ ๊ฒ€์ƒ‰์กฐ๊ฑด์ด๋‚˜ ์กฐ์ธ, ์„œ๋ธŒ์ฟผ๋ฆฌ ๋“ฑ์˜ ๊ธฐ๋Šฅ๋„ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. 

Querydsl๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฉํ•ด์„œ ์—”ํ‹ฐํ‹ฐ ํด๋ž˜์Šค๋ฅผ Q๋„๋ฉ”์ธ ํด๋ž˜์Šค๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ์‹์„ ์ด์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— 

์ถ”๊ฐ€์ ์ธ ์„ค์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.