๐Ÿ“ Language

    [Spring][ํ˜ผ๊ณต] 6. ์Šคํ”„๋ง DB ์ ‘๊ทผ ๊ธฐ์ˆ  - (5) JPA

    [Spring][ํ˜ผ๊ณต] 6. ์Šคํ”„๋ง DB ์ ‘๊ทผ ๊ธฐ์ˆ  - (5) JPA

    ์Šคํ”„๋ง DB ์ ‘๊ทผ ๊ธฐ์ˆ  5. JPA JPA๋Š” ๊ธฐ์กด์˜ ๋ฐ˜๋ณต ์ฝ”๋“œ๋Š” ๋ฌผ๋ก ์ด๊ณ  SQL๋„ ์ง์ ‘ ๋งŒ๋“ค์–ด์„œ ์‹คํ–‰ํ•ด์ค€๋‹ค. SQL๊ณผ ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ์˜ ์„ค๊ณ„์—์„œ ๊ฐ์ฒด ์ค‘์‹ฌ์˜ ์„ค๊ณ„๋กœ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ์„ ํฌ๊ฒŒ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค. 1) ํ™˜๊ฒฝ ์„ค์ • build.gradle ํŒŒ์ผ์— JPA, h2 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถ”๊ฐ€ spring-boot-starter-data-jpa: ๋‚ด๋ถ€์— jdbc ๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํฌํ•จํ•œ๋‹ค. ๋”ฐ๋ผ์„œ jdbc๋Š” ์ œ๊ฑฐํ•ด๋„ ๋œ๋‹ค. ์Šคํ”„๋ง ๋ถ€ํŠธ์— JPA ์„ค์ • ์ถ”๊ฐ€ show-sql: JPA๊ฐ€ ์ƒ์„ฑํ•˜๋Š” SQL์„ ์ถœ๋ ฅํ•œ๋‹ค. ddl-auto: JPA๋Š” ํ…Œ์ด๋ธ”์„ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š”๋ฐ none์€ ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ๋ˆ๋‹ค. create๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์—”ํ‹ฐํ‹ฐ ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํ…Œ์ด๋ธ”๋„ ์ง์ ‘ ์ƒ์„ฑํ•ด์ค€๋‹ค..

    [Spring][ํ˜ผ๊ณต] 6. ์Šคํ”„๋ง DB ์ ‘๊ทผ ๊ธฐ์ˆ  - (4) ์Šคํ”„๋ง JDBC Template

    ์Šคํ”„๋ง DB ์ ‘๊ทผ ๊ธฐ์ˆ  4. ์Šคํ”„๋ง JDBC Template ์ˆœ์ˆ˜ JDBC์™€ ๋™์ผํ•œ ํ™˜๊ฒฝ ์„ค์ •์ด๋‹ค. ์Šคํ”„๋ง JDBC Template, MyBatis์™€ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” JDBC API์—์„œ ๋ณธ ๋ฐ˜๋ณต ์ฝ”๋“œ๋ฅผ ๋Œ€๋ถ€๋ถ„ ์ œ๊ฑฐํ•ด์ค€๋‹ค. ํ•˜์ง€๋งŒ SQL์€ ์ง์ ‘ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค. package hello.hello.spring.repository; import hello.hello.spring.domain.Member; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; im..

    [Spring][ํ˜ผ๊ณต] 6. ์Šคํ”„๋ง DB ์ ‘๊ทผ ๊ธฐ์ˆ  - (3) ์Šคํ”„๋ง ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ

    ์Šคํ”„๋ง DB ์ ‘๊ทผ ๊ธฐ์ˆ  3. ์Šคํ”„๋ง ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ด๋ฒˆ ํ…Œ์ŠคํŠธ๋Š” ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์™€ DB๊นŒ์ง€ ์—ฐ๊ฒฐํ•œ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ์ด๋‹ค. ์ด์ „ ํ…Œ์ŠคํŠธ๋Š” ์ˆœ์ˆ˜ ์ž๋ฐ” ์ฝ”๋“œ๋งŒ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์ด๋‹ค. ์ˆœ์ˆ˜ํ•œ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๊ฐ€ ๋Œ€๋ถ€๋ถ„ ์ข‹์€ ํ…Œ์ŠคํŠธ์ด๊ณ  ์„ค๊ณ„๊ฐ€ ์ž˜ ๋˜์–ด์žˆ๋Š” ๊ฒƒ์ด๋‹ค. @SpringBootTest: ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์™€ ํ…Œ์ŠคํŠธ๋ฅผ ํ•จ๊ป˜ ์‹คํ–‰ํ•œ๋‹ค. @Transactional: ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ์ด ์• ๋…ธํ…Œ์ด์…˜์ด ์žˆ์œผ๋ฉด, ํ…Œ์ŠคํŠธ ์‹œ์ž‘ ์ „์— ํŠธ๋žœ์žญ์…˜์„ ์‹œ์ž‘ํ•˜๊ณ  ํ…Œ์ŠคํŠธ ์™„๋ฃŒ ํ›„์— ๋กค๋ฐฑํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด DB์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚จ์ง€ ์•Š์œผ๋ฏ€๋กœ ๋‹ค์Œ ํ…Œ์ŠคํŠธ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค. (@AfterEach ๋ถˆํ•„์š”) @Commit: @Transactional๊ฐ€ ์žˆ์–ด๋„ ํ…Œ์ŠคํŠธ๊ฐ€ ๋๋‚œ ํ›„ DB์— ๋ฐ˜์˜ํ•œ๋‹ค. package hello.hello.spring.serv..

    [Spring][ํ˜ผ๊ณต] 6. ์Šคํ”„๋ง DB ์ ‘๊ทผ ๊ธฐ์ˆ  - (2) ์ˆœ์ˆ˜ JDBC

    [Spring][ํ˜ผ๊ณต] 6. ์Šคํ”„๋ง DB ์ ‘๊ทผ ๊ธฐ์ˆ  - (2) ์ˆœ์ˆ˜ JDBC

    ์Šคํ”„๋ง DB ์ ‘๊ทผ ๊ธฐ์ˆ  2. ์ˆœ์ˆ˜ JDBC ์ด๋ฒˆ ๊ธ€์€ `์•„์ฃผ ์˜ค๋ž˜์ „์—๋Š” ์ด๋ ‡๊ฒŒ JDBC API๋ฅผ ์ง์ ‘ ์ฝ”๋”ฉํ–ˆ๊ตฌ๋‚˜` ์ •๋„๋กœ๋งŒ ์ฐธ๊ณ ๋กœ ์•Œ์•„๋‘์ž 1) ํ™˜๊ฒฝ ์„ค์ • build.gradle ํŒŒ์ผ์— jdbc, h2 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถ”๊ฐ€ ์Šคํ”„๋ง ๋ถ€ํŠธ์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์„ค์ • ์ถ”๊ฐ€ url์€ ์ด์ „ ๊ธ€์— ์„ค์น˜ํ•œ h2์˜ url์„ ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค. ๋งŒ์•ฝ driver class name ์ž…๋ ฅ ์‹œ ๋นจ๊ฐ„ ๊ธ€์”จ๋กœ ๋…ธ์ถœ๋œ๋‹ค๋ฉด, build.gradle๋ฅผ ๋‹ค์‹œ ๋กœ๋“œํ•˜๋ฉด ๋œ๋‹ค. 2) Jdbc ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๊ตฌํ˜„ package hello.hello.spring.repository; import hello.hello.spring.domain.Member; import org.springframework.jdbc.datasource.Dat..

    [Spring][ํ˜ผ๊ณต] 6. ์Šคํ”„๋ง DB ์ ‘๊ทผ ๊ธฐ์ˆ  - (1) H2 DB ์„ค์น˜

    [Spring][ํ˜ผ๊ณต] 6. ์Šคํ”„๋ง DB ์ ‘๊ทผ ๊ธฐ์ˆ  - (1) H2 DB ์„ค์น˜

    ์Šคํ”„๋ง DB ์ ‘๊ทผ ๊ธฐ์ˆ  ์ง€๊ธˆ๊นŒ์ง€๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ์„ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„๊ฐ€ ๋‚ด๋ ค๊ฐ€๋ฉด ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋˜ ๋ฐ์ดํ„ฐ๋“ค์ด ์‚ฌ๋ผ์กŒ๋‹ค. ๊ทธ๋ž˜์„œ ์‹ค๋ฌด์—์„œ๋Š” DB(๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค)์— ๋ฐ์ดํ„ฐ๋“ค์„ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•œ๋‹ค. ์ˆœ์ˆ˜ JDBC: JDBC๋Š” DB SQL์„ ์ด์šฉํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„์™€ DB๋ฅผ ์—ฐ๊ฒฐํ•  ๋•Œ ํ•„์š”ํ•œ ๊ธฐ์ˆ ๋กœ ์ˆœ์ˆ˜ JDBC๋Š” ๋ง ๊ทธ๋Œ€๋กœ ์˜ˆ์ „์— ์ˆœ์ˆ˜ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์„ ๋งํ•œ๋‹ค. ์Šคํ”„๋ง JDBC Template: ์ˆœ์ˆ˜ JDBC๋Š” ์‚ฌ์šฉํ•˜๊ธฐ ์–ด๋ ค์šฐ๋‹ˆ ์Šคํ”„๋ง์ด ์ค‘๋ณต ์ œ๊ฑฐ์™€ ๊ฐ™์€ ์ž‘์—…์„ ํ•œ Template์„ ์ œ๊ณตํ•˜๊ฒŒ ๋œ๋‹ค. ์ด ๊ธฐ์ˆ ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ DB๋กœ SQL์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. JPA: SQL์„ ๊ฐœ๋ฐœ์ž๋“ค์ด ์ง์ ‘ ์งœ๋Š” ๊ฒƒ์ด ์•„๋‹Œ JPA๊ฐ€ ๊ฐ์ฒด์˜ ๋“ฑ๋ก, ์‚ญ์ œ, ์ˆ˜์ • ๋“ฑ ์ฟผ๋ฆฌ๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA: JPA๋ฅผ ํŽธ๋ฆฌ..

    [Spring][ํ˜ผ๊ณต] 5. ์›น MVC ๊ฐœ๋ฐœ - ํšŒ์› ์›น ๊ธฐ๋Šฅ

    [Spring][ํ˜ผ๊ณต] 5. ์›น MVC ๊ฐœ๋ฐœ - ํšŒ์› ์›น ๊ธฐ๋Šฅ

    ์›น MVC ๊ฐœ๋ฐœ 1. ํšŒ์› ์›น ๊ธฐ๋Šฅ 1) ํ™ˆ ํ™”๋ฉด ์ถ”๊ฐ€ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ •์  ํŒŒ์ผ๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค. ์ฆ‰, ์›ฐ์ปด ํŽ˜์ด์ง€(index.html)๊ฐ€ ์žˆ์–ด๋„ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด ์ •์  ํŽ˜์ด์ง€๋Š” ๋ฌด์‹œ๋œ๋‹ค. package hello.hello.spring.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class HomeController { @GetMapping("/") public String home() { return "home"; } } 2) ํšŒ์› ๋“ฑ๋ก form: ๊ฐ’์„ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋Š” HTML ํƒœ๊ทธ์ด๋‹ค. ์•„๋ž˜ ..