spring 4

TIL Spring #2-4

JPA Entity ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ 1. JPA๋ž€ ๋ฌด์—‡์ธ๊ฐ€? : ์˜ˆ๋ฅผ ๋“ค์–ด ์ด์ „ ํ”„๋กœ์ ํŠธ์—์„œ(ORM์ด ์—†๋Š” ํ™˜๊ฒฝ) ์–ด๋–ค ์ปฌ๋Ÿผ ํ•˜๋‚˜๋ฅผ ์ถ”๊ฐ€ํ–ˆ์„ ๋•Œ ๊ทธ์— ๋”ฐ๋ฅธ ์ถ”๊ฐ€์ ์ธ SQL ์ˆ˜์ •์ด ๋ฌด์ˆ˜ํžˆ ๋งŽ์•„์ง„๋‹ค. ์ด๋กœ ์ธํ•ด ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง ๊ฐœ๋ฐœ๋ณด๋‹ค SQL ์ž‘์„ฑ ๋ฐ ์ˆ˜์ •์— ๋” ๋งŽ์€ ์‹œ๊ฐ„์„ ํ• ์• ํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ ORM ์ด ๋“ฑ์žฅํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. Object Relational Mapping์˜ ์ค„์ž„๋ง๋กœ ์ž๋ฐ” ํด๋ž˜์Šค์™€ DB data ๋ฅผ mapping ํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์šด ์ž‘์—…์„ ORM์ด ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์ค€๋‹ค. (์ง์ ‘ DB๋ฅผ ๋‹ค๋ฃจ์ง€ ์•Š์•„๋„ ๋จ~) # JPA๋Š” ORM ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ํ‘œ์ค€ ๋ช…์„ธ - ๊ทธ๋ฆฌ๊ณ  JPA๋ฅผ ๊ตฌํ˜„ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ ์ค‘ ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ด๋Š” ๊ฒƒ์ด 'ํ•˜์ด๋ฒ„๋„ค์ดํŠธ' ์ด๋‹ค! (์ž์ฃผ ๋“ฑ์žฅ ์˜ˆ์ •) 2. Entity๋ž€ ๋ฌด์—‡์ผ๊นŒ? : JPA์— ์˜ํ•ด ๊ด€๋ฆฌ๋˜..

Spring 2023.12.12

TIL Spring #2-3

IoC / DI IoC Container & bean - ์˜์กด์„ฑ ์ฃผ์ž…์„ ์œ„ํ•ด์„œ๋Š” ๊ฐ์ฒด ์ƒ์„ฑ์ด ์šฐ์„ ๋˜์–ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์–ด๋–ค ๊ฐ์ฒด๋ฅผ ์–ด๋””์— ์ƒ์„ฑํ• ์ง€ ์–ด๋–ป๊ฒŒ ์•Œ๊นŒ? ์ด๊ฒƒ์„ Spring์—์„œ ๋„์™€์ค€๋‹ค! bean: Spring์ด ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ์ฒด IoC Container: Bean ์„ ๋ชจ์•„๋‘” ์ปจํ…Œ์ด๋„ˆ - ๋“ฑ๋ก๋ฐฉ๋ฒ•? ๋“ฑ๋กํ•˜๊ณ ์ž ํ•˜๋Š” ํด๋ž˜์Šค ์œ„์— @Component ์• ๋„ˆํ…Œ์ด์…˜์„ ์ž‘์„ฑํ•ด์ค€๋‹ค! ์ด๋ ‡๊ฒŒ ์• ๋„ˆํ…Œ์ด์…˜์ด ๋ถ™์€ ํด๋ž˜์Šค์— ํ•œํ•ด Spring์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ์ง„ํ–‰ํ•œ๋‹ค. Spring ๊ด€๋ จํ•œ ์—ฌ๋Ÿฌ๊ฐ€์ง€๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํด๋ž˜์Šค๊ฐ€ ์žˆ๋Š”๋ฐ ๊ฑฐ๊ธฐ์— @ComponentScan ์ด๋ผ๋Š” ์• ๋„ˆํ…Œ์ด์…˜์ด ์žˆ๋‹ค! ๊ทธ๋ž˜์„œ @Component ํ•ด๋‹น ์• ๋„ˆํ…Œ์ด์…˜์ด ์žˆ๋Š” ํŒจํ‚ค์ง€์™€ ํ•˜์œ„ ํŒจํ‚ค์ง€๋ฅผ ๋ชจ๋‘ ๋Œ์•„๋‹ค๋‹ˆ๋ฉด์„œ ์• ๋„ˆํ…Œ์ด์…˜์ด ๋ถ™์€ ํด๋ž˜์Šค๋ฅผ bean์œผ๋กœ ๋“ฑ..

Spring 2023.12.12

TIL Spring 2-2

IoC&DI ๊ธฐ์กด ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•ด๋ณด๊ธฐ # IoC&DI ๋Š” Spring ํ•ต์‹ฌ ๊ธฐ์ˆ ๋กœ ๊ฐ๊ฐ ์„ค๊ณ„ ์›์น™, ๋””์ž์ธ ํŒจํ„ด์„ ๋œปํ•œ๋‹ค. ์™œ ์ด๊ฒƒ์„ ์ œ๊ณตํ•˜๋Š”๊ฐ€? ์ข‹์€ ์ฝ”๋“œ๋ฅผ ์œ„ํ•ด ์ œ๊ณตํ•œ๋‹ค. ๋”๋ณด๊ธฐ ๋…ผ๋ฆฌ๊ฐ€ ๊ฐ„๋‹จํ•ด์•ผ ํ•œ๋‹ค. ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๊ณ  ํ‘œํ˜„์„ ๋ช…ํ™•ํ•˜๊ฒŒ ํ•œ๋‹ค. ์ฝ”๋“œ๋ฅผ ์ฒ˜์Œ ๋ณด๋Š” ์‚ฌ๋žŒ๋„ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ณ  ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์˜์กด์„ฑ์„ ์ตœ์†Œํ™”ํ•ด์•ผ ํ•œ๋‹ค. ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ ํ•˜๋”๋ผ๋„ ํฌ๊ฒŒ ๊ตฌ์กฐ์˜ ๋ณ€๊ฒฝ์ด ์—†์–ด์•ผ ํ•œ๋‹ค. ์ด ํŒŒํŠธ์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ํ‚ค์›Œ๋“œ๋Š” ์˜์กด์„ฑ, ์ฃผ์ž… ์ด ๋‘๊ฐ€์ง€์ด๋‹ค! ๊ฐ•ํ•œ๊ฒฐํ•ฉ์ผ์ˆ˜๋ก ์ฝ”๋“œ ๋‚ด์—์„œ ์–ด๋–ค ๋ถ€๋ถ„์„ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์ฝ”๋“œ๋ฅผ ๋Š์ž„์—†์ด ์ˆ˜์ •ํ•ด์•ผ ํ•œ๋‹ค. (๋น„ํšจ์œจ์ ) #์˜์กด์„ฑ ๊ทธ๋ž˜์„œ ์ด ๊ฐ•ํ•œ ๊ฒฐํ•ฉ์„ ์•ฝํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์•ผํ•œ๋‹ค. interface ๋‹คํ˜•์„ฑ์˜ ์›๋ฆฌ๋ฅผ ํ†ตํ•ด ์•ฝํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค! - ์ธํ„ฐํŽ˜์ด์Šค ์ƒ์„ฑ - ์ธํ„ฐํŽ˜..

Spring 2023.12.08

TIL Spring 2-1

Spring์˜ 3 Layer Architecture - Controller ํด๋ž˜์Šค ํ•˜๋‚˜๋กœ ๋ชจ๋“  API๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ๋ฐ”๋žŒ์งํ•˜์ง€ ์•Š๋‹ค! - ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•ด ์„œ๋ฒ„์—์„œ์˜ ์ฒ˜๋ฆฌ ๊ณผ์ •์„ Controller, Service, Repository ๋กœ ๋ถ„๋ฆฌํ–ˆ๋‹ค. 1. 3 Layer Architecture Controller : ํด๋ผ์ด์–ธํŠธ์˜ HTTP Request๋ฅผ ๋ฐ›์•„ Service์— ์ „๋‹ฌํ•œ๋‹ค. (๋งŒ์•ฝ ๋ฐ์ดํ„ฐ๊ฐ€ ์š”์ฒญ์— ์žˆ๋‹ค๋ฉด ํ•จ๊ป˜ ์ „๋‹ฌ) - Service์—์„œ ์ฒ˜๋ฆฌ ์™„๋ฃŒ๋œ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์‘๋‹ตํ•œ๋‹ค. Service : ์‹ค์ œ ์‚ฌ์šฉ์ž์˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค. (๋น„์ง€๋‹ˆ์Šค ๋กœ์ง์„ ๊ตฌํ˜„) - DB๊ด€๋ จ ์ž‘์—…์€ Repository์—๊ฒŒ ์š”์ฒญ Repository : DB์™€ ๊ด€๋ จํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. - D..

Spring 2023.12.07