๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿ’Š Java & Kotlin & Spring/- spring framework +

[Spring & Springboot-JPA] 1) Springboot์—์„œ Mysql์„ JPA ์™€ ์—ฐ๋™ํ•˜๊ธฐ.

by Wonit 2019. 11. 23.

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์„ ๋ฏธ๋ฆฌ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•

ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ JPA์™€ Lombok์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์„ค์ •์„ ๋ฏธ๋ฆฌ ํ•˜์—ฌ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์ง€๋งŒ ์ˆ˜๋™์œผ๋กœ ์„ค์ •์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

 

build.gradle์— ์ˆ˜๋™์œผ๋กœ dependencies๋ฅผ ๊ฑธ์–ด์ฃผ๋Š” ๋ฐฉ๋ฒ•

์œ„์™€ ๊ฐ™์ด 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์— ๋ฌผ๋ ธ์Œ์„ ๋ณด์—ฌ์ฃผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜์˜ค๋ฉด ๋์ด๋‹ค! 

๋Œ“๊ธ€