Programming Project ์ž‘์—…์‹ค/๋‚ด์šฉ ์ •๋ฆฌ

[์šฐ๋ฆฌ์ง‘ ๊ฐ€์กฑ ์ปค๋ฎค๋‹ˆํ‹ฐ ์›น ์„œ๋น„์Šค ํ”„๋กœ์ ํŠธ] ๊ธฐ์ˆ  ์ •๋ฆฌ - ์ดˆ๊ธฐ Domain ์„ค์ •

์ฃผ๋‹ˆ์“ฐ๐Ÿง‘‍๐Ÿ’ป 2021. 12. 24. 20:06
728x90
๋ฐ˜์‘ํ˜•

ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ Source Code๋Š” '์ฃผ๋‹ˆํ•˜๋ž‘ Git Hub'์—์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.



 

๐Ÿ—‚ ๋ชฉ์ฐจ(INDEX)
       1.  
์ดˆ๊ธฐ๊ตฌ์„ฑ

       2. Spring Security ์ดˆ๊ธฐ ๊ตฌ์„ฑ

       3. Interceptor ์„ค์ •

.      4. ์ดˆ๊ธฐ Domain ์„ค์ •


 


 

๐Ÿš€ Package Tree

๋ฐ˜์‘ํ˜•

 

 

๐Ÿš€ Config - BaseDataTime Entity

์ด Class๋ฅผ ๋งŒ๋“  ์ด์œ ๋Š” ์ž‘์„ฑ ํ˜น์€ ์ƒ์„ฑ์ผ์‹œ์™€ ์ˆ˜์ •์ผ์‹œ๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” Entity๋“ค์ด ์ƒ์†์„ ๋ฐ›์•„์„œ ์ž๋™์œผ๋กœ DB์— ํ•ด๋‹น ๊ฐ’๋“ค์ด ๋„ฃ์–ด์งˆ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“œ๋Š” ๊ฒƒ์ด์—์š”.


@EntityLisnters๋ž€?


์—”ํ‹ฐํ‹ฐ๋ฅผ DB์— ์ ์šฉํ•˜๊ธฐ ์ด์ „ ์ดํ›„์— ์ปค์Šคํ…€ ์ฝœ๋ฐฑ์„ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋Š” ์นœ๊ตฌ์ธ ๊ฒƒ์ด์—์š”.

์ฃผ๋‹ˆํ•˜๋ž‘์€ AuditingEntityListener.class๋ฅผ ๊ฐ’์œผ๋กœ ์ฃผ์–ด ํ•ด๋‹น Class์— Auditing(๊ฐ์‚ฌ or ๊ฒ€์‚ฌ) ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•œ ๊ฒƒ์ด์—์š”. 


@MappedSuperclass๋ž€?

JPA Entity Class๋“ค ํ•ด๋‹น ์ถ”์ƒ ํด๋ž˜์Šค ์ƒ์†ํ•  ๊ฒฝ์šฐ registerDate, modifyDate๋ฅผ ์ปฌ๋Ÿผ์œผ๋กœ ์ธ์‹ํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ์นœ๊ตฌ์ธ ๊ฒƒ์ด์—์š”.

๊ทธ ๋‹ค์Œ ์•„๋ž˜ ํ•„๋“œ ๋ณ€์ˆ˜๋“ค์— Getter๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๋Š” Lombok์˜ @Getter๋ฅผ ์ถ”๊ฐ€ํ•ด ์ค€ ๊ฒƒ์ด์—์š”.


@CreaateDate๋ž€?


Entity๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์ €์žฅ๋  ๋•Œ ์‹œ๊ฐ„์ด ์ž๋™ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋„ฃ์–ด์ฃผ๋Š” ์นœ๊ตฌ์ธ ๊ฒƒ์ด์—์š”.

๊ทธ๋ฆฌ๊ณ , DB๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ, @Column์„ ํ†ตํ•ด ์ƒ์†๋ฐ›๋Š” Entity๊ฐ€ ๋งŒ๋“ค Table ์ปฌ๋Ÿผ์— register_date์™€ modify_date๋ผ๋Š” ์ปฌ๋Ÿผ์ด ๋งŒ๋“ค์–ด์ง€๋„๋ก ์ด๋ฆ„์„ ๊ฐ•์ œ๋กœ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ๊ณ , LocalDateTime์œผ๋กœ ํ˜„์žฌ Server ์‹œ๊ฐ„์˜ ์ผ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜์—ฌ ๋“ฑ๋ก์ผ์‹œ์™€ ์ˆ˜์ •์ผ์‹œ๊ฐ€ ๋งŒ๋“ค์–ด ์ง€๋„๋ก ํ•œ ๊ฒƒ์ด์—์š”.

์ด์ œ ๊ฐ Entity์—์„œ ํ•ด๋‹น Class๋ฅผ ์ƒ์† ๋ฐ›๊ธฐ๋งŒ ํ•˜๋ฉด ๋”ฐ๋กœ ๋“ฑ๋ก / ์ˆ˜์ •์ผ์— ๋Œ€ํ•œ ์„ค์ • ์—†์ด๋„ ์ถ”๊ฐ€๊ฐ€ ๋œ๋‹ค๋Š” ๊ฒƒ ์•„๋‹ˆ๊ฒ ์–ด์š”?!

 

๐Ÿš€ enum class - Member Grade

์ตœ์ดˆ Lombok์˜ @Getter๋ฅผ ํ†ตํ•ด ํ•„๋“œ ๋ณ€์ˆ˜์— Getter๋ฅผ ํ™œ์„ฑํ™” ํ•˜๊ณ , @NoArgsConstructor๋กœ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๊ณ , @AllArgsConstructor๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ํ•„๋“œ ๋ณ€์ˆ˜๊ฐ’์— ๋Œ€ํ•œ ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ค์–ด ์ค€ ๊ฒƒ์ด์—์š”.

๊ทธ ๋‹ค์Œ์— GUEST, FAMILY, ADMIN์ด๋ผ๋Š” ๋“ฑ๊ธ‰์„ ๋‚˜๋ˆ„๊ณ , ํ•ด๋‹น enum(์—ด๊ฑฐํ˜•) ๋ณ„๋กœ ์„ค๋ช…์„ ๋‹ฌ์•„์ค€ ๊ฒƒ์ด์—์š”.

๊ทธ๋ฆฌ๊ณ , ํ•„๋“œ ๋ณ€์ˆ˜๋Š” ํ•ด๋‹น ์„ค๋ช…์„ ๊ฐ€์งˆ descripton์œผ๋กœ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ๋‹ต๋‹ˆ๋‹ค!

 

์ด์ œ ๊ธฐ๋ณธ ์„ค์ •์€ ๋ชจ๋‘ ๋๋‚œ ๊ฒƒ ๊ฐ™์€ ๊ฒƒ์ด์—์š”. ์ด์ œ๋ถ€ํ„ฐ Entity๋„ ๋งŒ๋“ค๊ณ , Repository, Service, Controller๋“ค์„ ํ•œ๋ฒˆ ๋งŒ๋“ค์–ด ๋ณผ ๊ฒƒ์ธ๋ฐ, ๋จผ์ € ์ฃผ๋‹ˆํ•˜๋ž‘์ด ์ž‘์„ฑํ•œ ๋ฉ”๋‰ด์–ผ ๋“ฑ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค ๋ถ€ํ„ฐ ๋งŒ๋“ค์–ด ๋ณผ ๊ฒƒ์ด์—์š”.

๊ทธ๋Ÿผ ๋‹ค์Œ ์ฃผ์ œ๋กœ ๋˜ ๋งŒ๋‚˜์š”!

728x90
๋ฐ˜์‘ํ˜•