๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ŠคํŒŒ๋ฅดํƒ€55

์ˆ˜์ค€๋ณ„ ํ•™์Šต๋ฐ˜_๋ฒ ์ด์ง๋ฐ˜ 5ํšŒ์ฐจ ์„ธ์…˜ ๋ฒ ์ด์ง๋ฐ˜๋ฐ์ดํ„ฐ๋ชจ๋ธ๋ง๊ณผ ์—ฐ๊ด€๊ด€๊ณ„12/19 11:00 ~ 12:00 (์•ฝ 1์‹œ๊ฐ„ ์ง„ํ–‰) ์ค‘์š”ํ‚ค์›Œ๋“œ๋‹จ๋ฐฉํ–ฅ vs ์–‘๋ฐฉํ–ฅ์—ฐ๊ด€๊ด€๊ณ„ ์ฃผ์ธ๋ถ€๋ชจ-์ž์‹ ๊ด€๊ณ„cascadeorphanRemoval ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง1. ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„a. ์‹œ๋‚˜๋ฆฌ์˜ค์— ์•Œ๋งž์€ ๋น„์ฆˆ๋‹ˆ์Šค ๊ด€์ ์€?!b. ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ ์‹œ์Šคํ…œ์€ ______________________์ด๋‹ค!ํ•œ ๋ช…์˜ ํ•™์ƒ์ด ํ•˜๋‚˜์˜ ์ˆ˜์—…๋งŒ ๋“ค์„ ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐํ•˜๋‚˜์˜ ์ˆ˜์—…์ด ์—ฌ๋Ÿฌ ๋ช…์˜ ํ•™์ƒ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ2. ํ…Œ์ด๋ธ” ์ง์ ‘ ๊ทธ๋ ค๋ณด๊ธฐa. case1: Course ํ…Œ์ด๋ธ”์ด studentId๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐstudent ํ…Œ์ด๋ธ”pk (ํ•™์ƒ)name1 gygim 2 Steve Course ํ…Œ์ด๋ธ”pk (์ˆ˜์—…) student_id name 11 Spring 21Ktor31React.. 2024. 12. 22.
์ˆ˜์ค€๋ณ„ ํ•™์Šต๋ฐ˜_๋ฒ ์ด์ง๋ฐ˜ 4ํšŒ์ฐจ ์„ธ์…˜ ๋ฒ ์ด์ง๋ฐ˜๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๋ฐฉ๋ฒ• JPA12/17 11:00 ~ 12:40 (์•ฝ 1์‹œ๊ฐ„ 40๋ถ„ ์ง„ํ–‰) ์ค‘์š” ํ‚ค์›Œ๋“œJPA์˜์†์„ฑ ์ปจํ…์ŠคํŠธ → ๋ฉด์ ‘์—์„œ ํ•ญ์ƒ ๋‚˜์˜ค๋Š” ๋‚ด์šฉ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์˜ ์žฅ์ 1์ฐจ ์บ์‹ฑ๋™๋“ฑ์„ฑ ๋ณด์žฅ์“ฐ๊ธฐ ์ง€์—ฐ๋ณ€๊ฒฝ ๊ฐ์ง€JPA ๋‘ ๊ฐ€์ง€ ํ™œ์šฉ ๋ฐฉ๋ฒ•์ˆœ์ˆ˜ JPAJPA ์ธํ„ฐํŽ˜์ด์Šค → ํ˜„์—…์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค. JPA(Java Persistence API)JPA๋Š” ์ž๋ฐ” ์ƒํƒœ๊ณ„์—์„œ ORM์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ํ‘œ์ค€ ๋ช…์„ธ์ด๋‹ค.Hibernate๋Š” JPA ๋ช…์„ธ๋ฅผ ๊ตฌํ˜„ํ•œ ๊ตฌํ˜„์ฒด ์ค‘ ํ•˜๋‚˜์ด๋‹ค.JPA๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ JDBC API๋ฅผ ํ™œ์šฉํ•œ๋‹ค. ORM(Object-Relational Mapping)๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ์ฒด์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋‹ค.ORM์˜ ํ•œ๊ณ„๊ฐ€ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— SQL์„ ์ž˜ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.๋‘˜ ๋‹ค ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค. ํ•œ์ชฝ๋งŒ ์•Œ๊ณ  ์žˆ์œผ๋ฉด .. 2024. 12. 21.
๊ธฐ์ดˆ ํ”„๋กœ์ ํŠธ_Day 1 ์˜ค๋Š˜ ํ•œ ๊ณต๋ถ€ ๐Ÿง ํ”„๋กœ์ ํŠธ ๋ฐœ์ œ ๋“ฃ๊ธฐ๊ธฐ์ดˆ ํ”„๋กœ์ ํŠธ S.A ์ž‘์„ฑ๊นƒ ๋ฉ”์‹œ์ง€ ๊ด€๋ จ ๋ฏธ๋‹ˆ ์„ธ์…˜ ๋“ฃ๊ธฐTIL ๋ธ”๋กœ๊ทธ ์ž‘์„ฑ ์˜ค๋Š˜ ์–ป์€ ๋‚ด์šฉ ์ •๋ฆฌ โœ๏ธ ๊ธฐ์ดˆ ํ”„๋กœ์ ํŠธ (๋‰ด์Šคํ”ผ๋“œ ๋งŒ๋“ค๊ธฐ ํ”„๋กœ์ ํŠธ)application.yml ํŒŒ์ผapplication.properties ํŒŒ์ผ์˜ ๋‹ค๋ฅธ ๋ฒ„์ „ → ํŒ€ ํ”„๋กœ์ ํŠธ ์‹œ ์„œ๋กœ์˜ ํ™˜๊ฒฝ์„ ์ž์œ ๋กญ๊ฒŒ ์ž‘์„ฑํ•˜๊ณ  gitignore๋ฅผ ํ†ตํ•ด commit์—์„œ ์ œ์™ธ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.ERD ๊ด€๋ จ ์ƒˆ๋กœ ์•Œ๊ฒŒ ๋œ ๋‚ด์šฉ์—ฐ๊ด€๊ด€๊ณ„ ์—ฐ๊ฒฐ์„ ํ•˜์ง€ ์•Š๊ณ ๋„ id์™€ type ๊ฐ’์„ ์ด์šฉํ•ด์„œ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.๋ฏธ๋‹ˆ ์„ธ์…˜: ๋‚ด์šฉ → ex) Feat: Add Level 1............์ปค๋ฐ‹์— ๋Œ€ํ•œ ๋‚ด์šฉ ์ž‘์„ฑ : ๋ฌด์Šจ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ๋Š”์ง€, ๋ญ๋ฅผ ์ถ”๊ฐ€ํ–ˆ๋Š”์ง€ ๊ตฌ์ฒด์ ์œผ๋กœ ์ ์„์ˆ˜๋ก ํŒ€์›๋“ค์ด ๋ณด๊ธฐ ์‰ฝ๋‹ค!์š”์ฆ˜์€ ๊นƒ๋ชจ์ง€๋ฅผ ์ด์šฉํ•ด์„œ ๋‚˜ํƒ€๋‚ด๊ธฐ๋„ .. 2024. 12. 20.
์ผ์ • ๊ด€๋ฆฌ ์•ฑ Develop_ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… ๊ณผ์ œ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… ๋ฌธ์ œ ์ƒํ™ฉ์ผ์ • ์ƒ์„ฑ API๋ฅผ ์™„์„ฑํ•˜๊ณ  Postman์œผ๋กœ ํ…Œ์ŠคํŠธํ–ˆ์ง€๋งŒ 500 Internal Server Error๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.๋ฌธ์ œ ์›์ธ์ฝ”๋“œ์—์„œ @EntityListeners ์–ด๋…ธํ…Œ์ด์…˜์ด ์ž˜๋ชป๋œ ํด๋ž˜์Šค๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์—ˆ๋‹ค.์ž˜๋ชป๋œ ์ฝ”๋“œ@EntityListeners(EntityListener.class)์ด๋กœ ์ธํ•ด EntityListener๊ฐ€ ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š์•„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•@EntityListeners ์–ด๋…ธํ…Œ์ด์…˜์„ ์˜ฌ๋ฐ”๋ฅธ ํด๋ž˜์Šค์ธ AuditingEntityListener๋กœ ์ˆ˜์ •ํ–ˆ๋‹ค.์ˆ˜์ •๋œ ์ฝ”๋“œ@EntityListeners(AuditingEntityListener.class)์ˆ˜์ • ํ›„ Postman์œผ๋กœ ๋‹ค์‹œ ์š”์ฒญ์„ ๋ณด๋ƒˆ๊ณ , ์ •์ƒ์ ์œผ๋กœ ์ผ์ •์ด ์ƒ์„ฑ๋˜์—ˆ๋‹ค.๊ฒฐ๋ก  ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์–ด๋…ธํ…Œ์ด.. 2024. 12. 19.
์ฃผํŠน๊ธฐ ์ž…๋ฌธ/์ˆ™๋ จ_Day 20 ์˜ค๋Š˜ ํ•œ ๊ณต๋ถ€ ๐Ÿง ๊ฐœ์ธ ๊ณผ์ œ Lv 5 ์™„์„ฑ๊ฐœ์ธ ๊ณผ์ œ Lv 6 ์™„์„ฑ๊ฐœ์ธ ๊ณผ์ œ Lv 7 ์™„์„ฑAPI ๋ช…์„ธ์„œ & ERD ์ˆ˜์ •TIL ๋ธ”๋กœ๊ทธ ์ž‘์„ฑ ์˜ค๋Š˜ ์–ป์€ ๋‚ด์šฉ ์ •๋ฆฌ โœ๏ธ ๊ฐœ์ธ ๊ณผ์ œํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ด์•ผ๊ฒ ๋‹ค!Lv 6. ๋น„๋ฐ€๋ฒˆํ˜ธ ์•”ํ˜ธํ™” ๊ณผ์ œ ์š”๊ตฌ์‚ฌํ•ญ์— ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ํ™œ์šฉํ•ด์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์•”ํ˜ธํ™”ํ•ด์„œ ์ €์žฅํ–ˆ๋‹ค.PasswordEncoder์˜ Encode, matches ๋ฉ”์„œ๋“œ๋ฅผ ํ™œ์šฉํ•ด์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์•”ํ˜ธํ™” ๋ฐ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ผ์น˜ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ–ˆ๋‹ค.Lv 7. ๋Œ“๊ธ€ CRUDcomment Entity๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค.member Entity์™€ todo Entity ๊ฐ„์˜ ์—ฐ๊ด€๊ด€๊ณ„๋ฅผ ์„ค์ •ํ–ˆ๋‹ค.๊ทธ ํ›„ ๋Œ“๊ธ€ ์ƒ์„ฑ, ์ „์ฒด ๋Œ“๊ธ€ ์กฐํšŒ, ์„ ํƒ ์ผ์ •์˜ ์ „์ฒด ๋Œ“๊ธ€ ์กฐํšŒ, ์„ ํƒ ๋Œ“๊ธ€ ์ˆ˜์ •, ์„ ํƒ ๋Œ“๊ธ€ ์‚ญ์ œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ๋‹ค.API ๋ช…์„ธ์„œ์™€ ERD ์ˆ˜์ •  ์˜ค๋Š˜ ํ•˜๋ฃจ .. 2024. 12. 18.
์ฃผํŠน๊ธฐ ์ž…๋ฌธ/์ˆ™๋ จ_Day 19 ์˜ค๋Š˜ ํ•œ ๊ณต๋ถ€ ๐Ÿง ๊ฐœ์ธ ๊ณผ์ œ Lv 4 ์™„์„ฑ๊ฐœ์ธ ๊ณผ์ œ Lv 5 ์™„์„ฑ๋ฒ ์ด์ง๋ฐ˜ ์„ธ์…˜ ๋“ฃ๊ธฐBean Validation ๊ฐ•์˜ ๋ณต์ŠตTIL ๋ธ”๋กœ๊ทธ ์ž‘์„ฑ ์˜ค๋Š˜ ์–ป์€ ๋‚ด์šฉ ์ •๋ฆฌ โœ๏ธ ๊ฐœ์ธ ๊ณผ์ œํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ด์•ผ๊ฒ ๋‹ค!Lv 4. ๋กœ๊ทธ์ธ(์ธ์ฆ)LoginReqeustDto ์ƒ์„ฑ(email, password ํ•„๋“œ ์ถ”๊ฐ€), LoginResponseDto ์ƒ์„ฑ(member ํ•„๋“œ ์ถ”๊ฐ€), AuthController ์ƒ์„ฑ(login ๋ฉ”์„œ๋“œ ๊ตฌํ˜„), AuthService ์ƒ์„ฑ(login ๋ฉ”์„œ๋“œ ๊ตฌํ˜„), MemberRepository ์ˆ˜์ •(findByEmailAndPassword ๋ฉ”์„œ๋“œ ๊ตฌํ˜„), LoginFilter(doFilter override), WebConfig(loginFilter ๋“ฑ๋ก)Lv 5. ๋‹ค์–‘ํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์ ์šฉํ•˜๊ธฐLv .. 2024. 12. 17.