๐ Language
![[Spring][ํผ๊ณต] 6. ์คํ๋ง DB ์ ๊ทผ ๊ธฐ์ - (5) JPA](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgWhYW%2FbtrgJYeJBlk%2F6Yw0rqEuzUORkWTkQWkJ70%2Fimg.png)
[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](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMHQM2%2FbtrfouNIDIE%2F0lSJIuvu5s3yKyx5AUPAd0%2Fimg.png)
[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 ์ค์น](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbbOKL%2FbtreJwDZEZE%2FjZ7QemDpBwBLaWcLkpYBKk%2Fimg.png)
[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 ๊ฐ๋ฐ - ํ์ ์น ๊ธฐ๋ฅ](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmvX4v%2Fbtrd14PHBxD%2FiVZkTju02i00boVakUgAV1%2Fimg.png)
[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 ํ๊ทธ์ด๋ค. ์๋ ..