JPA๋?
JPA๋ฅผ intelliJ์์ ์ฐ๋ํ๊ธฐ ์ ์ ๊ฐ๋จํ๊ฒ JPA์ ๋ํด์ ์์๋ณด์. ์กฐ๊ธ ๋ ์์ธํ๊ณ ๊น์ ์ค๋ช ์ ์ํ๋ ์ฌ๋์ Heee's DEV ๋ธ๋ก๊ทธ์ ๋ฐฉ๋ฌธํ๊ธธ ๋ฐ๋๋ค!
JPA๋ Java ์ง์ ORM(Object-Relational-Mapping) ํ์ค ํ๋ ์์ํฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ค ํ๋๋ก, ๊ธฐ์กด์ ์ฟผ๋ฆฌ๋ฌธ์ ์ง์ ๋ ๋ฆฌ๋ฉด์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ SQL๋ฌธ๋ฒ์ผ๋ก ๊ณ ์์ ํ๋ ๊ณผ๊ฑฐ ๋ฐฉ์๊ณผ๋ ๋ค๋ฅด๊ฒ SQL๊ณผ ๊ด๋ จ๋ ์ ๋ณด ๋ํ ๊ฐ์ฑ ํํ๋ก ๋ง๋ค์ด ํ๋ก๊ทธ๋๋จธ๊ฐ ์กฐ๊ธ ๋ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ง์คํ ์ ์๊ฒ ํด์ฃผ๋ ORM-Library์ด๋ค.
๊ฐ๋ฐ์๊ฐ ์ฟผ๋ฆฌ๋ฌธ์ ๋ ๋ฆฌ์ง ์๋๋ค๊ณ ?
์์์ ์ธ๊ธํ๋ฏ์ด ๊ฐ๋ฐ์๋ ๊ฐ์ฒด์งํฅ์ ์กฐ๊ธ ๋ ์ ๊ฒฝ์ฐ๋ฉด ๋๋ค๊ณ ํ๋ค. ์ด ๋ง์ ์ฐ๋ฆฌ๋ ๋ ์ด์ JDBC๋ฅผ ์ฌ์ฉํ์ง ์์๋ ๋๋ค๋ ์๋ฆฌ๊ณ , ์ ํํ๋ ORM ํ๋ ์์ํฌ๊ฐ JDBC API๋ฅผ ์ง์ ๋ง์ ธ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ธฐ๋ฅ์ ์ํํ๊ฒ ํ๋ค.
๊ฐ๋ฐ์๋ ๋จ์ง Java์ ๊ฐ์ฒดํํ๋ก๋ง Data๋ฅผ ๊ด๋ฆฌํ๋ค๋ฉด DataBase๋ฅผ ์ฃผ๋ฌด๋ฅผ ์ ์๋ค.
JPA ์ฐ๊ฒฐํ๊ธฐ
1. JPA์ lombok์ dependency์ ์ถ๊ฐํ springboot project ์์ฑํ๊ธฐ
ํ๋ก์ ํธ๋ฅผ ์์ฑํ ๋ JPA์ Lombok์ ์ถ๊ฐํ์ฌ ์ค์ ์ ๋ฏธ๋ฆฌ ํ์ฌ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ๋ ์์ง๋ง ์๋์ผ๋ก ์ค์ ์ ํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
์์ ๊ฐ์ด build.gradle
์ ๋ค์ด๊ฐ์ ๋ค์๊ณผ ๊ฐ์ ์์กด์ฑ์ ์ถ๊ฐ์์ผ์ค๋ค.
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
implementation'mysql:mysql-connector-java'
implementation('mysql:mysql-connector-java')
2. Mysql ์์ ์คํค๋ง ์์ฑ
Jpa์ ์ฐ๋ํ DB์ Schema๋ฅผ ์์ฑํ๋ค.
์ ๋ Mysql์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ Mysql Workbench๋ฅผ ์ด์ฉํ์ฌ ์์ ๋ฅผ ๊ตฌ์ฑํ๋๋ฐ ํน์ Mysql Workbench๊ฐ ์๋ ๋ ์๋ mysql workbench ๋ค์ด๋ก๋ ๋ฐฉ๋ฒ์ ๋ํ ํ ๋ธ๋ก๊ทธ ํฌ์คํ ์ ๋ค์๊ฐ์ ๋ค์ด๋ก๋๋ฅผ ๋ฐ๊ณ ๋ค์ ํ์ตํ๊ธธ ๋ถํ๋๋ฆฝ๋๋ค..!
3. ๋ค์ springboot ํ๋ก์ ํธ๋ก ๋์์ application.properties
์ ์ด์ฉํด mysql๊ณผ ์ฐ๋
์ ๊ฒฝ๋ก๋ก ๋ค์ด๊ฐ์ ๋ค์๊ณผ ๊ฐ์ด datasource.url๊ณผ username, password๋ฅผ ์ค์ ํด์ผํ๋ค.
์๋ง ์ฒ์ mysql workbench๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ๊ธฐ๋ณธ์ ์ธ ํฌํธ ๋ฒํธ๊ฐ 3306๋ฒ์ผ๋ก ์ค์ ๋์ด ์์๊ฑด๋ฐ, ํ์๋ 3306 ํฌํธ์ ๋ค๋ฅธ DB๊ฐ ๋ฌผ๋ ค์๊ธฐ ๋๋ฌธ์ 3307๋ก ์ค์ ํ๋ค. ์์ธํ ๊ฒ์ ๋์ mysql ์ค์ ์ ๋ค์ด๊ฐ์ ํ์ธํ๋ฉด ๋๋ค.
์ค์ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ๋ค.
// <properties ์ค์ >
spring.datasource.url=jdbc:mysql://`localhost:3307(ํฌํธ๋ฒํธ)`/`study(์คํค๋ง ์ด๋ฆ)`?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul&allowPublicKeyRetrieval=true
// <db response name DB ์์ด๋>
spring.datasource.username=root
// <db response password DB ๋น๋ฐ๋ฒํธ>
spring.datasource.password=root
๋์
์ด์ ์ด๋ ๊ฒ ์ค์ ์ด ๋๋๊ฒ ๋๋ค๋ฉด ๋ค์๊ณผ ์คํ์ ํด๋ณด์! ๊ทธ๋ผ ๋ค์๊ณผ ๊ฐ์ ํ๋ฉด์ด ๋ฐ ๊ฒ์ด๋ค.
`Initialized JPA EntityManagerFactory for persistence unit 'default'` ์ ์์ ์ผ๋ก JPA๊ฐ initialized๊ฐ ` Tomcat started on port(s): 8080 (http) with context path ''` ํฐ์บฃ ํฌํธ 8080์ ๋ฌผ๋ ธ์์ ๋ณด์ฌ์ฃผ๋ ๋ฉ์์ง๊ฐ ๋์ค๋ฉด ๋์ด๋ค!
'๐ Java & Kotlin & Spring > - spring framework +' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring & Springboot-JPA] JPA๋ฅผ ์ด์ฉํ CRUD ๋ฉ์๋ ์์ฑํ๊ธฐ - 1 (Entity ์ค์ ๋ฐ Repository ์ค์ ) (0) | 2020.01.27 |
---|---|
[Spring & Springboot ๊ณตํต] HTTP Method - POST (0) | 2020.01.24 |
[Spring & SpringBoot ๊ณตํต] HTTP Method - GET (0) | 2020.01.19 |
02 Lombok (0) | 2019.11.23 |
์คํ๋ง๋ถํธ ์ REST API (0) | 2019.11.23 |
๋๊ธ