๊ฐœ๋ฐœ 8

TIL Spring #3-3

Entity ์—ฐ๊ด€๊ด€๊ณ„ 1:1 N:1 1:N N:M ์‹ค์ œ๋กœ ํ…Œ์ด๋ธ”์„ ๋”ฑ ํ•œ๊ฐœ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๊ฑฐ์˜ ์—†๋‹ค. DB table์˜ ์—ฐ๊ด€๊ด€๊ณ„ Entity ๊ฐ์ฒด์˜ ์—ฐ๊ด€๊ด€๊ณ„ ์ฐจ์ด๊ฐ€ ์žˆ์„๊นŒ? ์žˆ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅผ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ณ ๊ฐ์ด ์Œ์‹์„ ์ฃผ๋ฌธํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. ๊ทธ๋ ‡๋‹ค๋ฉด ๋‹น์—ฐํžˆ ์ฃผ๋ฌธํ•˜๋Š” ๊ณ ๊ฐ ํ…Œ์ด๋ธ” ํ•˜๋‚˜, ์Œ์‹ ํ…Œ์ด๋ธ” ํ•˜๋‚˜ ์ด ๋‘๊ฐœ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•„์š”ํ•  ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ณ ๊ฐ์ด ์Œ์‹์„ ์ฃผ๋ฌธํ–ˆ์„ ๋•Œ ํ•ด๋‹น ์ฃผ๋ฌธ๊ฑด์— ๋Œ€ํ•œ๊ฑด ์œ ์ €? ์Œ์‹? ์–ด๋Š ํ…Œ์ด๋ธ”์— ๋ช…์‹œํ•ด์ค˜์•ผํ• ๊นŒ? ์ด๋ฅผ ์œ ์ €๋‚˜ ์Œ์‹ ํ…Œ์ด๋ธ”์— ๋„ฃ๊ฒŒ ๋˜๋ฉด ๋‘˜๋‹ค ์‚ฌ์šฉ์ž, ์Œ์‹ ๋‚ด์šฉ์ด ์ค‘๋ณต๋˜๋Š” ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ user_id ์ปฌ๋Ÿผ์— 1๋ฒˆ 2๋ฒˆ ์œ ์ €๊ฐ€ ์ฃผ๋ฌธํ–ˆ๋‹ค. ๋ผ๋Š” ํ‘œํ˜„ ๋ฐฉ์‹๋„ ์•ˆ๋ ๊นŒ? ์ผ๋‹จ RDBMS ์ƒ์—์„œ๋Š” ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ๋ผ๊ณ  ์ดํ•ดํ•˜์ž. - 2 row..

Spring 2023.12.18

TIL Spring #3-2

ํšŒ์›๊ฐ€์ž…/๋กœ๊ทธ์ธ ๊ตฌํ˜„ Filter 'Spring security' framwork 1-1)ํšŒ์›๊ฐ€์ž… ๊ตฌํ˜„ - build.gradle JPA, MySQL ์ถ”๊ฐ€ // JPA implementation 'org.springframework.boot:spring-boot-starter-data-jpa' // MySQL runtimeOnly 'com.mysql:mysql-connector-j' + application.properties / ์‚ฌ์šฉํ•  DB ์—ฐ๊ฒฐ - ํŒจ์Šค์›Œ๋“œ ์•”ํ˜ธํ™” ํ•„์ˆ˜ - Spring security์—์„œ ์ œ๊ณตํ•˜๋Š” ์•”ํ˜ธํ™” ๋ฉ”์„œ๋“œ ์‚ฌ์šฉํ•ด์ค€๋‹ค.(์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ์•”ํ˜ธ๋ž‘ ์•”ํ˜ธํ™”๋œ ์•”ํ˜ธ๋ฅผ ๋น„๊ตํ•ด ์ผ์น˜์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ๋„ ์žˆ์–ด ๋งค์šฐ ํŽธ๋ฆฌํ•˜๋‹ค.) import java.util.Optional; @Service ..

Spring 2023.12.15

TIL Spring #3-1

[์ธ์ฆ๊ณผ ์ธ๊ฐ€] ์ฟ ํ‚ค์™€ ์„ธ์…˜ JWT ๋”๋ณด๊ธฐ ํ˜น์‹œ, bean์„ ์ˆ˜๋™์œผ๋กœ ๋“ฑ๋กํ•ด์•ผ๋˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์„๊นŒ? ๊ธฐ์ˆ ์ ์ธ ๋ฌธ์ œ๋‚˜ ๊ณตํ†ต ๊ด€์‹ฌ์‚ฌ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด๋Š” ์ˆ˜๋™์œผ๋กœ bean์„ ๋“ฑ๋กํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. (๋น„๊ต์  ๋ถ€๊ฐ€์ ์ธ ๊ฒƒ) - @Component ๋ง๊ณ  ๋ฉ”์„œ๋“œ์— @Bean ์• ๋„ˆํ…Œ์ด์…˜ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค~! ์ธ์ฆ/์ธ๊ฐ€ ์ธ์ฆ: ํ•ด๋‹น ์œ ์ €๊ฐ€ ์‹ค์ œ ์œ ์ €์ธ์ง€ ์ธ์ฆํ•˜๋Š” ๊ฒƒ ex)๋กœ๊ทธ์ธ ์ธ๊ฐ€: ํ•ด๋‹น ์œ ์ €๊ฐ€ ํŠน์ • ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•œ์ง€ ํ—ˆ๊ฐ€๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ ex)๋น„ํšŒ์›๋กœ๊ทธ์ธ - ์ผ๋ฐ˜์ „์œผ๋กœ ์„œ๋ฒ„-ํด๋ผ์ด์–ธํŠธ ๊ตฌ์กฐ๋กœ ๋˜์–ด์žˆ๊ณ , ์‹ค์ œ๋กœ ์ด ๋‘๊ฐ€์ง€๋Š” ๋ฉ€๋ฆฌ ๋–จ์–ด์ ธ์žˆ๋‹ค. - HTTP ํ”„๋กœํ† ์ฝœ์„ ์ด์šฉํ•˜์—ฌ ํ†ต์‹ ํ•˜๋Š”๋ฐ, ๊ทธ ํ†ต์‹ ์€ ๋น„์—ฐ๊ฒฐ์„ฑ๊ณผ ๋ฌด์ƒํƒœ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•ด, ๋ช‡๊ฐ€์ง€ ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณค ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๋Š” ์‹ค์ œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์ด..

Spring 2023.12.14

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 1-2

1. ์ •์ ํŽ˜์ด์ง€, ๋™์ ํŽ˜์ด์ง€ 2. ๋ฐ์ดํ„ฐ๋ฅผ client ๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ• 3. Path Variable & Request Param 4. HTTP ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ์ฒด๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ 1. html ํŒŒ์ผ ๋ฐ˜ํ™˜ # ์ •์ ํŽ˜์ด์ง€ @Controller public class HtmlController { //์ •์ ํŒŒ์ผ, static ํด๋”์— ์œ„์น˜! @GetMapping("/static-hello") public String hello(){ return "hello.html"; } @GetMapping("/html/redirect") public String htmlStatic(){ return "redirect:/hello.html"; } //thymeleaf ํ™˜๊ฒฝ์—์„œ controller ๋ฅผ ๊ฑฐ์น˜๋Š” ๋ฐฉ์‹ //์ •์ ํŒŒ์ผ, temp..

Spring 2023.12.05

TIL JAVA ํŒ€ํ”Œ #1

ํ‚ค์˜ค์Šคํฌ ํ”„๋กœ๊ทธ๋žจ ๋งŒ๋“œ๋Š” ์ค‘์ธ๋ฐ ๋„ˆ๋ฌด ์–ด๋ ต๋‹ค ์šฐ๋ฆฌ ํŒ€์€ ๋‹ค๋ฅธ ํ•œ๋ถ„์˜ ์ฝ”๋“œ์— ๊ฐ์ž ๊ธฐ๋Šฅ์„ ๋ง๋Œ€๋Š” ์‹์ธ๋ฐ ๋‚˜๋Š” ๋น„๊ต์  ๊ฐ„๋‹จํ•œ ๊ฑธ ๋งก์•˜์Œ์—๋„ ์•„์ฃผ ํ—ท๊ฐˆ๋ฆฐ๋‹ค. ์•„๋ฌด๋ž˜๋„ ๋‚ด๊ฐ€ ์ง  ์ฝ”๋“œ ๋ง๊ณ  ํƒ€์ธ์˜ ์ฝ”๋“œ๋ฅผ ๋ณ€์ˆ˜๋ฅผ ์ดํ•ดํ•˜๊ณ  ํŒŒ์•…ํ•˜๋Š”๊ฒŒ ์•„์ง ๋”๋”˜๊ฐ€๋ณด๋‹ค.. ๋‚˜์˜ ์ฝ”๋“œ ์งœ๋Š” ์‹ค๋ ฅ ๋˜ํ•œ ์ฐธ ์•ˆ๋Š”๋‹ค.. ์•”ํŠผ ์˜ค๋Š˜ ๊ณต๋ถ€ํ•œ ๊ฒƒ์€ ๊ฐ ํด๋ž˜์Šค ๊ฐ„์˜ ๊ด€๊ณ„ ํŒŒ์•…? ์ •๋„๋กœ ํ•ด๋‘๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค..