2021. 12. 24. 20:06ใProgramming Project ์์ ์ค/๋ด์ฉ ์ ๋ฆฌ
ํด๋น ํ๋ก์ ํธ์ ๋ํ 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๋ค์ ํ๋ฒ ๋ง๋ค์ด ๋ณผ ๊ฒ์ธ๋ฐ, ๋จผ์ ์ฃผ๋ํ๋์ด ์์ฑํ ๋ฉ๋ด์ผ ๋ฑ์ ํ์ธํ ์ ์๋ ์๋น์ค ๋ถํฐ ๋ง๋ค์ด ๋ณผ ๊ฒ์ด์์.
๊ทธ๋ผ ๋ค์ ์ฃผ์ ๋ก ๋ ๋ง๋์!