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

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

[ TIL ] JPA ์‹ฌํ™”_Day 6 ์˜ค๋Š˜ ํ•œ ๊ณต๋ถ€ ๐Ÿง ํ•„์ˆ˜๊ณผ์ œ Level 1 - 3, 4, 5 ๋๋‚ด๊ธฐ1-3. AOP ์ดํ•ดํ•˜๊ธฐUserAdminController ํด๋ž˜์Šค์˜ changeUserRole( ) ๋ฉ”์„œ๋“œ ์‹คํ–‰ ์ „์— ๋™์ž‘ํ•˜๋„๋ก ์ˆ˜์ •์‹คํ–‰ ์ „์— ๋™์ž‘ํ•ด์•ผ ํ•˜๋ฏ€๋กœ @After๋กœ ๋˜์–ด ์žˆ๋˜ ์–ด๋…ธํ…Œ์ด์…˜์„ @Before๋กœ ๋ณ€๊ฒฝํ–ˆ๋‹ค. ์•ˆ์˜ execution ํ‘œํ˜„์‹์„ UserAdminController.changeUserRole๋กœ ๋ณ€๊ฒฝํ–ˆ๋‹ค.1-4. ์ปจํŠธ๋กค๋Ÿฌ ํ…Œ์ŠคํŠธ ์ดํ•ดํ•˜๊ธฐtodo_๋‹จ๊ฑด_์กฐํšŒ_์‹œ_todo๊ฐ€_์กด์žฌํ•˜์ง€_์•Š์•„_์˜ˆ์™ธ๊ฐ€_๋ฐœ์ƒํ•œ๋‹ค ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํŒจํ•˜๊ณ  ์žˆ์–ด์„œ ์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜์–ด ํ†ต๊ณผ๋  ์ˆ˜ ์žˆ๋„๋ก ์ˆ˜์ •Service ๋‹จ์˜ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด todo๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์„ ๋•Œ, InvalidReqeustException์ด ๋ฐœ์ƒํ•˜๊ณ  ์žˆ๋‹ค.GlobalExceptionH.. 2025. 1. 19.
[ TIL ] JPA ์‹ฌํ™”_Day 4 ์˜ค๋Š˜ ํ•œ ๊ณต๋ถ€ ๐Ÿง ํ•„์ˆ˜ ๊ณผ์ œ ์‹œ์ž‘Level 1@Transactional์˜ ์ดํ•ดํ˜„์žฌ ๊ธฐ๋ณธ์ ์œผ๋กœ TodoService์˜ ๋ชจ๋“  ๋กœ์ง์ด @Transactional(readOnly = true)๋กœ ์„ค์ •๋˜์–ด ์žˆ๋‹ค.๊ทธ๋ž˜์„œ saveTodo( ) ๋ฉ”์„œ๋“œ๊ฐ€ ์‹คํ–‰๋  ๋•Œ๋„ ๊ฐ™์€ ์„ค์ •์ด ๋“ค์–ด๊ฐ€์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์žˆ๋‹ค.DB๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๋”ฐ๋กœ @Transactional ์–ด๋…ธํ…Œ์ด์…˜์„ ๋ถ™์—ฌ์ค˜์•ผ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค.JWT์˜ ์ดํ•ด๊ถ๊ธˆํ–ˆ๋˜ ๋‚ด์šฉ๊ฐ๊ฐ์˜ ๋ฉ”์„œ๋“œ ์œ„์— ๋”ฐ๋กœ @Transactional์„ ๋ถ™์—ฌ์ฃผ๋ฉด ๋˜์ง€ ์•Š์„๊นŒ? ์™œ ์ „์ฒด ์ ์šฉ์„ ํ•˜๋Š” ๊ฑฐ์ง€??@Transactional(readOnly = true)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์กฐํšŒ์šฉ ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•ด์„œ ์„ฑ๋Šฅ์ƒ ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์ผ๋ฐ˜์ ์œผ๋กœ ํŠธ๋žœ์žญ์…˜์„ ์‚ฌ์šฉํ•ด์„œ DB์— ๋ฐ์ดํ„ฐ์˜ ์ผ.. 2025. 1. 17.
[ TIL ] JPA ์‹ฌํ™”_Day 3 ์˜ค๋Š˜ ํ•œ ๊ณต๋ถ€ ๐Ÿง JPA ์‹ฌํ™” 4, 5์ฃผ์ฐจ ๊ฐ•์˜Cascade (์˜์†์„ฑ ์ „์ด)์—ฐ๊ด€๊ด€๊ณ„์˜ ์ฃผ์ธ ๋ฐ˜๋Œ€ํŽธ์—์„œ ์‚ฌ์šฉํ•œ๋‹ค.@OneToMany ๋˜๋Š” @OneToOne์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.์–‘์ชฝ Entity์˜ ๋ผ์ดํ”„์‚ฌ์ดํด์ด ๋™์ผํ•˜๊ฑฐ๋‚˜ ๋น„์Šทํ•ด์•ผ ํ•œ๋‹ค.์˜ต์…˜ ์ข…๋ฅ˜ALL: ์ „์ฒด ์ƒํƒœ ์ „์ดPERSIST: ์ €์žฅ ์ƒํƒœ ์ „์ดREMOVE: ์‚ญ์ œ ์ƒํƒœ ์ „์ด → ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค. ์ž์‹ ํ…Œ์ด๋ธ”์˜ ๊ฐ’์ด ๊ฐ™์ด ์‚ญ์ œ๋˜์–ด์•ผ ํ•  ๊ฒฝ์šฐ ์‚ฌ์šฉํ•œ๋‹ค. MERGE: ์—…๋ฐ์ดํŠธ ์ƒํƒœ ์ „์ด REFRESH: ๊ฐฑ์‹  ์ƒํƒœ ์ „์ดDETACH: ๋น„์˜์†์„ฑ ์ƒํƒœ ์ „์ดorphanRemoval (๊ณ ์•„ ๊ฐ์ฒด ์ œ๊ฑฐ)@OneToMany ๋˜๋Š” @OneToOne์—์„œ ์‚ฌ์šฉํ•œ๋‹ค. (๋ถ€๋ชจ Entity)Cascade.REMOVE์™€ ๋น„์Šทํ•œ ์šฉ๋„๋กœ ์‚ญ์ œ๋ฅผ ์ „ํŒŒํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.๋ถ€๋ชจ ๊ฐ์ฒด์—์„œ ๋ฆฌ์ŠคํŠธ.. 2025. 1. 16.
[ TIL ] JPA ์‹ฌํ™”_Day 1 ์˜ค๋Š˜ ํ•œ ๊ณต๋ถ€ ๐Ÿง JPA ์‹ฌํ™” 1, 2์ฃผ์ฐจ ๊ฐ•์˜ ๋“ฃ๊ธฐDB ์‚ฌ์šฉ ๋ฐฉ์‹ 3๊ฐ€์ง€Server Mode (ํ˜„์—…์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹)In-memory Mode (์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด๋ถ€์˜ ์—”์ง„์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹)Embedded Mode (์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด๋ถ€์˜ ์—”์ง„์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ ํœ˜๋ฐœ์„ฑ์ด ์—†์Œ)ModeH2 ๋‹ค์šด๋กœ๋“œ ์—ฌ๋ถ€์‹คํ–‰ ์ฃผ์ฒดDB ์ €์žฅ ์œ„์น˜์‚ฌ์šฉ ์šฉ๋„Server ModeO์™ธ๋ถ€๋กœ์ปฌ(ํŒŒ์ผ ์‹œ์Šคํ…œ)๋ฐฐํฌ ์šฉ๋„In-Memory ModeX์Šคํ”„๋ง๋ฉ”๋ชจ๋ฆฌํ…Œ์ŠคํŠธ ์šฉ๋„Embedded ModeX์Šคํ”„๋ง๋กœ์ปฌ(ํŒŒ์ผ ์‹œ์Šคํ…œ)๊ฐœ๋ฐœ ์šฉ๋„SQLDDL: CREATE, ALTER, DROPDML: SELECT, INSERT, UPDATE, DELETE, ORDER BY, GROUP BY, JOINํŠธ๋žœ์žญ์…˜ (์›์ž์„ฑ, ์ผ๊ด€์„ฑ, ๋…๋ฆฝ์„ฑ)DCL: BEGIN, C.. 2025. 1. 14.
[ TIL ] ์ฃผํŠน๊ธฐ ์‹ฌํ™”_Day 12 ์˜ค๋Š˜ ํ•œ ๊ณต๋ถ€ ๐Ÿง ์ฃผ๋ฌธ ์ƒํƒœ ๋ณ€๊ฒฝ API ์ˆ˜์ •์ฃผ๋ฌธ ์ˆ˜๋ฝ, ๋ฐฐ๋‹ฌ ์ค‘์ธ ์ƒํƒœ์—์„œ ์ทจ์†Œ ์ƒํƒœ๋กœ ๋ณ€๊ฒฝํ•  ๊ฒฝ์šฐ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ์ˆ˜์ •๋œ API ๋ช…์„ธ์„œ์™€ ๋™์ผํ•˜๊ฒŒ ์ฃผ๋ฌธ API ๊ด€๋ จ Response ์ˆ˜์ •{ ”orderId” : 1, “orderStatus”: “REQUESTED”, “quantity”: 2, “customer”: { “customerName”: “๊ณ ๊ฐ ์ด๋ฆ„” }}ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ์ฃผ๋ฌธ ์ƒ์„ฑ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ ์˜ค๋Š˜ ํ•˜๋ฃจ ์ •๋ฆฌ โœ๏ธ์˜ค๋Š˜๊นŒ์ง€ ํ•„์ˆ˜ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๊ตฌํ˜„์„ ์™„๋ฃŒํ–ˆ๋‹ค!ํŒ€์›๋“ค๊ณผ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ merge ํ•˜๊ณ  ํŒ€์žฅ๋‹˜ ํ™”๋ฉด์—์„œ Postman์„ ์‹คํ–‰ํ–ˆ๋‹ค. API ๋ช…์„ธ์„œ์™€ ๋‹ค๋ฅธ ๋ถ€๋ถ„๋“ค์„ ์ˆ˜์ •ํ•˜๊ณ  ์—๋Ÿฌ ๋‚˜๋Š” ๋ถ€๋ถ„๋“ค์„ ์ˆ˜์ •ํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์ณค๋‹ค.์ดํ›„ ์ถ”๊ฐ€๋กœ ๋” ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š” ์ฝ”.. 2025. 1. 10.
[ TIL ] ์ฃผํŠน๊ธฐ ์‹ฌํ™”_Day 11 ์˜ค๋Š˜ ํ•œ ๊ณต๋ถ€ ๐Ÿง API ๋ช…์„ธ์„œ Response ๋ถ€๋ถ„ ์ˆ˜์ • ์ˆ˜์ •๋œ API ๋ช…์„ธ์„œ ์ฐธ๊ณ ํ•ด์„œ ์ฃผ๋ฌธ ๊ด€๋ จ ๊ธฐ๋Šฅ ์ˆ˜์ •๊ฐ€๊ฒŒ ์ƒ์„ฑ API ๋ฆฌํŒฉํ† ๋ง๊ฐ€๊ฒŒ ์ˆ˜์ • API ์ƒ์„ฑ๊ฐ€๊ฒŒ ์กฐํšŒ(๋‹ค๊ฑด) API ์ƒ์„ฑ๊ฐ€๊ฒŒ ํ์—… API ์ƒ์„ฑ๊ฐ€๊ฒŒ ์ˆ˜์ • API ์˜ˆ์™ธ ์ฒ˜๋ฆฌํ•ด๋‹น ๊ฐ€๊ฒŒ์˜ ์‚ฌ์žฅ๋‹˜์ด ์•„๋‹Œ ๊ฒฝ์šฐ ์ˆ˜์ • ๋ถˆ๊ฐ€๋Šฅ๊ฐ€๊ฒŒ ํ์—… API ์˜ˆ์™ธ ์ฒ˜๋ฆฌํ•ด๋‹น ๊ฐ€๊ฒŒ์˜ ์‚ฌ์žฅ๋‹˜์ด ์•„๋‹Œ ๊ฒฝ์šฐ ์‚ญ์ œ ๋ถˆ๊ฐ€๋Šฅ๊ฐ€๊ฒŒ ์กฐํšŒ(๋‹ค๊ฑด) API ๋ฆฌํŒฉํ† ๋ง๋‹จ์–ด ๊ฒ€์ƒ‰์œผ๋กœ ๊ฐ€๊ฒŒ ์กฐํšŒ ๊ฐ€๋Šฅํ•˜๋„๋ก ์ˆ˜์ •๊ฐ€๊ฒŒ ์กฐํšŒ(๋‹จ๊ฑด) API ์ƒ์„ฑ ๋‚ด์ผ ๊ณ„ํš โฐ๊ธฐ๋Šฅ ์ž˜ ๊ตฌํ˜„๋˜๋Š”์ง€ Postman์œผ๋กœ ํ™•์ธ+์ถ”๊ฐ€ ๊ณ„ํš์ด ์ƒ๊ธธ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค~_~ 2025. 1. 9.