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

โœ๏ธ Today I Learned(TIL)/๐ŸŒฑ ์ŠคํŒŒ๋ฅดํƒ€ ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„71

[ TIL ] ์ฃผํŠน๊ธฐ ์‹ฌํ™”_Day 10 ์˜ค๋Š˜ ํ•œ ๊ณต๋ถ€ ๐Ÿง ํŒ€ ํ”„๋กœ์ ํŠธ ์ง„ํ–‰์ฃผ๋ฌธ ์ƒ์„ฑ API ์ƒ์„ฑ์ตœ์†Œ ์ฃผ๋ฌธ ๊ธˆ์•ก์„ ๋„˜์ง€ ๋ชปํ•˜๋Š” ์˜ˆ์™ธ ์ฒ˜๋ฆฌ์˜คํ”ˆ/๋งˆ๊ฐ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ์ฃผ๋ฌธ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ์ฃผ๋ฌธ ์ƒํƒœ ๋ณ€๊ฒฝ API ์ƒ์„ฑ๋ฐฐ๋‹ฌ ์™„๋ฃŒ, ์ทจ์†Œ๋œ ์ฃผ๋ฌธ์— ๋Œ€ํ•œ ์ƒํƒœ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ์ฃผ๋ฌธ ์ƒํƒœ๋ฅผ ์ „ ๋‹จ๊ณ„๋กœ ๋˜๋Œ์•„๊ฐ€๋Š” ์š”์ฒญ ๋ถˆ๊ฐ€๋Šฅ ์˜ˆ์™ธ ์ฒ˜๋ฆฌHTTP ๋ฉ”์„œ๋“œ๋ฅผ PUT์—์„œ PATCH๋กœ ์ˆ˜์ •์„œ๋น„์Šค Layer์—์„œ ์ง์ ‘ ์ฒ˜๋ฆฌํ•˜๋˜ ์˜ˆ์™ธ๋ฅผ GlobalExceptionHandler๋ฅผ ํ™œ์šฉํ•ด์„œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌERD์˜ ๊ฐ ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ์ปฌ๋Ÿผ๋ช…์„ ์ข€ ๋” ์ง๊ด€์ ์œผ๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ˆ˜์ •์ง„ํ–‰ํ–ˆ๋˜ ๋ถ€๋ถ„ Pull Request ์‹คํ–‰๋ชฐ๋ž๋˜ ๋‚ด์šฉEnum ๊ฐ’์˜ ์šฐ์„  ์ˆœ์œ„๋ฅผ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋‹ค!ordinal( )๋ฅผ ํ™œ์šฉํ•ด์„œ ์šฐ์„  ์ˆœ์œ„๋ฅผ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋‹ค.LocalTime ํƒ€์ž…์€ isBefore, isA.. 2025. 1. 8.
[ TIL ] ์ฃผํŠน๊ธฐ ์‹ฌํ™”_Day 9 ์˜ค๋Š˜ ํ•œ ๊ณต๋ถ€ ๐Ÿง ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ Java 1๋ฌธ์ œ ํ’€์ด & ๋ธ”๋กœ๊ทธ ์ •๋ฆฌ5๋ถ„ ๊ธฐ๋ก ๋ณด๋“œ ์„ธ์…˜ ๋“ฃ๊ธฐํ”„๋กœ์ ํŠธ ์ค‘๊ฐ„์ค‘๊ฐ„ ๊ธฐ๋ก์„ ํ•ด๋‘๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค.๋‚˜์ค‘์— ๋ณด๊ณ  ์Šคํ† ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.S.A ์ž‘์„ฑ์™€์ด์–ด ํ”„๋ ˆ์ž„ ์ž‘์„ฑERD Diagram ์ž‘์„ฑAPI ๋ช…์„ธ์„œ ์ž‘์„ฑ ์˜ค๋Š˜ ํ•˜๋ฃจ ์ •๋ฆฌ โœ๏ธ์˜ค๋Š˜๋ถ€ํ„ฐ ํŒ€ ํ”„๋กœ์ ํŠธ๊ฐ€ ์‹œ์ž‘๋˜์—ˆ๋‹ค.๋ฐฐ๋‹ฌ์•ฑ์„ ์ฐธ๊ณ ํ•ด์„œ API๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ฃผ์ œ์˜€๋‹ค.๋จผ์ € ERD๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์™€์ด์–ดํ”„๋ ˆ์ž„์„ ์ž‘์„ฑํ–ˆ๋‹ค. ์™€์ด์–ดํ”„๋ ˆ์ž„๊ณผ ERD๋ฅผ ์ž‘์„ฑํ•˜๋ฉด์„œ ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ƒ๊ฐ๋ณด๋‹ค ์ปค์ง„ ๋А๋‚Œ์ด์—ˆ๋‹ค..๊ทธ๋ž˜์„œ ๋‚ด๊ฐ€ ๋งก์€ ๋ถ€๋ถ„์„ ํ•ด๋‚ผ ์ˆ˜ ์žˆ์„๊นŒ..?๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ ๊ทธ๊ฒƒ๋„ ์ž ์‹œ ๋ˆˆ์•ž์— ๋‹ฅ์นœ ์™€์ด์–ดํ”„๋ ˆ์ž„์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์— ์ง‘์ค‘ํ–ˆ๋‹ค.์˜คํ›„์—๋Š” 5๋ถ„ ๊ธฐ๋ก ๋ณด๋“œ ์„ธ์…˜์„ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ๋™์•ˆ ๊ธฐ๋กํ•˜๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์ค‘์š”ํ•œ ๊ฒƒ์ธ์ง€ ๊นจ๋‹ซ๋Š”.. 2025. 1. 7.
[ TIL ] ์ฃผํŠน๊ธฐ ์‹ฌํ™”_Day 8 ์˜ค๋Š˜ ํ•œ ๊ณต๋ถ€ ๐Ÿง ๊ฐœ์ธ ๊ณผ์ œ ๋ ˆ๋ฒจ 5 - 2๊นŒ์ง€ ๋งˆ๋ฌด๋ฆฌ ํ›„ ์ œ์ถœ๊ณผ์ œ ํ•ด์„ค ์„ธ์…˜ ๋“ฃ๊ธฐ์Šคํƒ ๋‹ค๋“œ๋ฐ˜ ์„ธ์…˜ ๋“ฃ๊ธฐ์ˆ˜๊ฐ•์ƒ ๋ฏธ๋‹ˆ ์„ธ์…˜ ๋“ฃ๊ธฐTIL ๋ธ”๋กœ๊ทธ ์ž‘์„ฑ ์˜ค๋Š˜ ์–ป์€ ๋‚ด์šฉ ์ •๋ฆฌ โœ๏ธ ์Šคํƒ ๋‹ค๋“œ๋ฐ˜ ์„ธ์…˜ - AOPAOP: ๊ด€์  ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค.ํŠน์ •ํ•œ ๋„๋ฉ”์ธ์— ์ข…์†๋˜์ง€ ์•Š๊ณ  ๋‚ด๊ฐ€ ์–ด๋–ค ์‹œ์ ์— ์ผ๊ด„์ ์œผ๋กœ ๋ชจ๋‘ ์ ์šฉํ•ด์ฃผ๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.๊ณ„์‚ฐ๋œ ๊ฒฐ๊ณผ๊ฐ’์— ๋Œ€ํ•ด์„œ ์ถœ๋ ฅํ•ด ์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ → ๋ชจ๋‘๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ๊ธฐ๋Šฅ → AOP๋กœ ๋งŒ๋“ค์–ด์„œ ์ถ”๊ฐ€ํ•˜๋ฉด ํŽธํ•˜๋‹ค.๋Œ€ํ‘œ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋ฉ”์„œ๋“œ๊ฐ€ ์‹คํ–‰๋˜์—ˆ๋Š”์ง€ ์‹คํ–‰๋˜์ง€ ์•Š์•˜๋Š”์ง€ ์ถœ๋ ฅํ•ด ์ฃผ๋Š” ๋กœ๊ทธ๊ฐ๊ฐ์˜ ๋ฉ”์„œ๋“œ๊ฐ€ ์–ผ๋งˆ๋‚˜ ๊ฑธ๋ ธ๋Š”์ง€ ์„ฑ๋Šฅ์„ ๊ตฌํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.๊ถŒํ•œ ๊ฒ€์‚ฌํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.๊ทธ๋ ‡๋‹ค๋ฉด ์–ด๋–ค ๊ฒƒ์„? ์–ธ์ œ? ์–ด๋–ป๊ฒŒ? → ์ง€์ •ํ•ด์ค˜์•ผ ํ•œ๋‹ค.๋Œ€์ƒ ์ง€์ • → PointCut์„.. 2025. 1. 6.
[ TIL ] ์ฃผํŠน๊ธฐ ์‹ฌํ™”_Day 4 ์˜ค๋Š˜ ํ•œ ๊ณต๋ถ€ ๐Ÿง ๊ฐœ์ธ ๊ณผ์ œ ํ•„์ˆ˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„์ˆ˜์ค€๋ณ„ ํ•™์Šต๋ฐ˜ ์Šคํƒ ๋‹ค๋“œ๋ฐ˜ ์„ธ์…˜ ๋“ฃ๊ธฐํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์‹ค์Šต ์„ธ์…˜ ๋“ฃ๊ธฐTIL ๋ธ”๋กœ๊ทธ ์ž‘์„ฑ ์˜ค๋Š˜ ์–ป์€ ๋‚ด์šฉ ์ •๋ฆฌ โœ๏ธ ๊ฐœ์ธ ๊ณผ์ œ ํ•„์ˆ˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„ํŠœํ„ฐ๋‹˜ ํ”ผ๋“œ๋ฐฑ ๋ฐ˜์˜ํ•ด์„œ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋งSetter๋กœ ๋˜์–ด ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ช… ๋ฐ”๊พธ๊ธฐComment์™€ Todo Entity์˜ setMember, serTodo ๋ฉ”์„œ๋“œ๋ฅผ updateMember, updateTodo๋กœ ๋ฐ”๊ฟ”์ฃผ์—ˆ๋‹ค.Comment ์ƒ์„ฑ์ž์—์„œ User์™€ Todo๋ฅผ ๊ฐ™์ด ๋ฐ›์œผ๋ฉด Comment๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋‘ Entity๋ฅผ ๋„ฃ์ง€ ์•Š๋Š” ์‹ค์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.update ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  ์ƒ์„ฑ์ž ์•ˆ์— ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›์Œ์œผ๋กœ์จ ๋นผ๋จน๋Š” ์‹ค์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ–ˆ๋‹ค.์ถ”๊ฐ€์ ์œผ๋กœ Todo์˜ ์ƒ์„ฑ์ž์—๋„ Member๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ์ˆ˜.. 2025. 1. 2.
[ TIL ] ์ฃผํŠน๊ธฐ ์‹ฌํ™”_Day 3 ์˜ค๋Š˜ ํ•œ ๊ณต๋ถ€ ๐Ÿง ์‹ฌํ™” Spring 3์ฃผ์ฐจ ๊ฐ•์˜ ๋“ฃ๊ธฐTIL ๋ธ”๋กœ๊ทธ ์ž‘์„ฑ ์˜ค๋Š˜ ์–ป์€ ๋‚ด์šฉ ์ •๋ฆฌ โœ๏ธ ์‹ฌํ™” Spring ๊ฐ•์˜ ๋“ฃ๊ธฐ@PostConstruct, @PreDestroy annotation์€ ํ‘œ์ค€ annotation์ด๊ธฐ ๋•Œ๋ฌธ์— ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.→ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ดˆ๊ธฐํ™”, ์ข…๋ฃŒ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” @Bean์˜ initMethod, destroyMethod๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.Bean ScopeSpring ์ปจํ…Œ์ด๋„ˆ์—์„œ Bean์ด ์–ด๋–ป๊ฒŒ ์ƒ์„ฑ๋˜๊ณ  ๊ด€๋ฆฌ๋˜๋Š”์ง€๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฐœ๋…์ด๋‹ค.@ExceptionHandler annotation์ด ์„ ์–ธ๋˜์ง€ ์•Š์€ ์ปจํŠธ๋กค๋Ÿฌ์˜ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋Š” ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.Annotation์šฉ๋„๋ฐ˜ํ™˜ ํ˜•์‹์˜ˆ์‹œ ์ฒ˜๋ฆฌ ๋ฒ”์œ„@ExceptionHandlerํŠน์ • ์ปจํŠธ๋กค๋Ÿฌ ๋‚ด์—์„œ ๋ฐœ์ƒํ•œ.. 2025. 1. 1.
[ TIL ] ์ฃผํŠน๊ธฐ ์‹ฌํ™”_Day 2 ์˜ค๋Š˜ ํ•œ ๊ณต๋ถ€ ๐Ÿง ์‹ฌํ™” Spring 1์ฃผ์ฐจ ๊ฐ•์˜ ๋“ฃ๊ธฐ → ์–ด์ œ ๋“ค์—ˆ๋˜ ๋ถ€๋ถ„๋ถ€ํ„ฐ ์ด์–ด์„œ ์ˆ˜๊ฐ•์‹ฌํ™” Spring 2์ฃผ์ฐจ ๊ฐ•์˜ ๋“ฃ๊ธฐํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ด๋ก  ์„ธ์…˜ ๋“ฃ๊ธฐ์—ฐ๋ง ๊ธฐ๋… ๋ผ๋””์˜ค ๐ŸคฉTIL ๋ธ”๋กœ๊ทธ ์ž‘์„ฑ ์˜ค๋Š˜ ์–ป์€ ๋‚ด์šฉ ์ •๋ฆฌ โœ๏ธ ์‹ฌํ™” Spring ๊ฐ•์˜ ๋“ฃ๊ธฐProxy ๊ฐ์ฒด๋Š” ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๋ฅผ ํ†ตํ•ด ๋„์›€์„ ๋ฐ›์•„์•ผ๋งŒ ์‹ค์ œ Entity์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.LazyInitializationException → ์‹ค์ œ JPA ๊ฐœ๋ฐœ์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ๋งˆ์ฃผ์น˜๋Š” Exception์˜์†์„ฑ ์ „์ด๋Š” ์ง€์—ฐ ๋กœ๋”ฉ, ์ฆ‰์‹œ ๋กœ๋”ฉ๊ณผ๋Š” ์•„๋ฌด ๊ด€๋ จ์ด ์—†๋‹ค.๊ฐ•์˜๋ฅผ ๋“ฃ๋‹ค๊ฐ€ ๊ถ๊ธˆํ–ˆ๋˜ ์ FetchType.LAZY์˜ ๊ฐœ๋… ์žก๊ธฐFetchType.LAZY: ๊ด€๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์ œ๋กœ ์ ‘๊ทผํ•  ๋•Œ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ์‹์ด๋‹ค. ๊ด€๋ จ๋œ Entity๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์กฐํšŒ.. 2024. 12. 31.