[Project] IntelliJ - MySQL, Spring Boot - JDBC ์—ฐ๊ฒฐ

Yumya's recordยท2024๋…„ 7์›” 30์ผ
0

[ํšŒ๊ณ ] Auction Project

๋ชฉ๋ก ๋ณด๊ธฐ
2/7
post-thumbnail

๐Ÿ€ ์ธํ…”๋ฆฌ์ œ์ด์™€ MySQL ์—ฐ๊ฒฐ, Spring boot์™€ JDBC ์—ฐ๊ฒฐํ•˜๊ธฐ


โœ๏ธ IntelliJ์™€ MySQL ์—ฐ๊ฒฐ

MySQL Workbench๋ฅผ ์—ด์ง€ ์•Š๊ณ  IntelliJ ๋‚ด์—์„œ DB๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด ์—ฐ๊ฒฐํ•œ๋‹ค.


1. Main Menu -> View -> Tool Windows -> Database

MainMenu

View

DB Browser๊ฐ€ ๋ณด์ด์ง€ ์•Š๋Š”๋‹ค๋ฉด, Database Navigator ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•ด์•ผํ•œ๋‹ค.
์•„๋ž˜ ๊ธ€์„ ์ฐธ๊ณ ํ•˜์—ฌ ์„ค์น˜ํ•˜๊ธธ ๋ฐ”๋ž€๋‹ค.

์ฐธ๊ณ  [IntelliJ] Community Edition์—์„œ DB์กฐํšŒํ•˜๊ธฐ


2. '+' -> Data Source -> ์‚ฌ์šฉํ•  ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค(MySQL)


3. ์‚ฌ์šฉํ•  DB ์ •๋ณด ์ž…๋ ฅ

DB name, user, password ๋“ฑ์„ ์ž…๋ ฅํ•œ๋‹ค.

Test Connection์œผ๋กœ DB์™€ ์—ฐ๊ฒฐ๋๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.


4. ์ƒ๋‹จ์˜ ์ฝ˜์†” ๋ฒ„ํŠผ -> Open Console -> Query๋ฌธ ์ž‘์„ฑ

Connection์„ ํด๋ฆญํ–ˆ์„ ๋•Œ ์ฟผ๋ฆฌ๋ฌธ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ˜์†”์ด ์—ด๋ฆฌ๊ฒŒ ๋œ๋‹ค.

์ขŒ์ธก ์œ„์˜ Schema๋ฅผ ํด๋ฆญํ•ด ์›ํ•˜๋Š” ์Šคํ‚ค๋งˆ๋ฅผ ์„ ํƒํ•œ ํ›„ ์ฟผ๋ฆฌ๋ฌธ์„ ์ž‘์„ฑํ•œ๋‹ค.

์ฝ˜์†”์— ์›ํ•˜๋Š” ์ฟผ๋ฆฌ๋ฌธ์„ ์ž‘์„ฑํ•˜๋ฉด MySQL์˜ Workbench๋ฅผ ์—ด์ง€ ์•Š๊ณ ๋„ MySQL์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ž…๋ ฅ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.


์ฐธ๊ณ  [IntelliJ] DB ์—ฐ๊ฒฐํ•˜๊ธฐ - MySQL


โœ๏ธ JDBC

  • Java Database Connectivity

  • Java ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ ๋ฐ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ Java์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ž๋ฐ” API

  • 3๊ฐ€์ง€ ๊ธฐ๋Šฅ์„ ํ‘œ์ค€ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ •์˜ํ•ด ์ œ๊ณตํ•œ๋‹ค.

๐Ÿ“Œ ํ‘œ์ค€ ์ธํ„ฐํŽ˜์ด์Šค
1. java.sql.Connection - ์—ฐ๊ฒฐ
2. java.sql.Statement - SQL์„ ๋‹ด์€ ๋‚ด์šฉ
3. java.sql.ResultSet - SQL ์š”์ฒญ ์‘๋‹ต


JDBC ๋™์ž‘

Java Application ๋‚ด์—์„œ JDBC API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•œ๋‹ค.

Java Application -> JDBC API -> JDBC Driver -> Database


JDBC API ๋™์ž‘ ๊ณผ์ •

  1. JDBC ๋“œ๋ผ์ด๋ฒ„ ๋กœ๋”ฉ : ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” JDBC ๋“œ๋ผ์ด๋ฒ„ ๋กœ๋”ฉ
  2. Connection ๊ฐ์ฒด ์ƒ์„ฑ : DriverManager๋ฅผ ํ†ตํ•ด DB์™€ ์—ฐ๊ฒฐ๋˜๋Š” Session์ธ Connection ๊ฐ์ฒด ์ƒ์„ฑ
  3. Statement ๊ฐ์ฒด ์ƒ์„ฑ : ์ž‘์„ฑ๋œ ์ฟผ๋ฆฌ๋ฌธ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ์ฒด์ธ Statement ๊ฐ์ฒด ์ƒ์„ฑ
  4. Query ์‹คํ–‰ : ์ƒ์„ฑ๋œ Statement ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•ด ์ž…๋ ฅํ•œ SQL Query ์‹คํ–‰
  5. ResultSet ๊ฐ์ฒด๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ ์กฐํšŒ : ์‹คํ–‰๋œ SQL Query๋ฌธ์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ ์…‹
  6. ResultSet ๊ฐ์ฒด Close : ์‚ฌ์šฉ๋œ ๊ฐ์ฒด๋“ค์„ ์‚ฌ์šฉํ•œ ์ˆœ์„œ ์—ญ์ˆœ์œผ๋กœ Close
  7. Statement ๊ฐ์ฒด Close : ์‚ฌ์šฉ๋œ ๊ฐ์ฒด๋“ค์„ ์‚ฌ์šฉํ•œ ์ˆœ์„œ ์—ญ์ˆœ์œผ๋กœ Close
  8. Connection ๊ฐ์ฒด Close : ์‚ฌ์šฉ๋œ ๊ฐ์ฒด๋“ค์„ ์‚ฌ์šฉํ•œ ์ˆœ์„œ ์—ญ์ˆœ์œผ๋กœ Close

JDBC Driver

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ํ†ต์‹ ์„ ๋‹ด๋‹นํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์•Œ๋งž๋Š” JDBC ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๊ตฌํ˜„ํ•ด ์ œ๊ณตํ•œ๋‹ค.

์ฐธ๊ณ  [Java] JDBC๋ž€ ๋ฌด์—‡์ธ๊ฐ€? - Java Database Connectivity


โœ๏ธ Spring Boot์™€ JDBC ์—ฐ๊ฒฐํ•˜๊ธฐ

2๊ฐœ์˜ ํŒŒ์ผ์— ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค.

build.gradle

runtimeOnly 'com.mysql:mysql-connector-j' //MySQL

Spring Boot Starter๋ฅผ ์ด์šฉํ•ด Spring Boot๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ MySQL ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ์ž๋™์œผ๋กœ ์ž…๋ ฅ๋œ๋‹ค.


application.properties

#MySQL
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

#DB Source url
#serverTimezone์„ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ํ˜„์žฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ Time zone์œผ๋กœ ์—ฐ๊ฒฐ์ด ๋งบ์–ด์ง„๋‹ค.
#ํ•œ๊ธ€ ์‚ฌ์šฉ์„ ์œ„ํ•ด characterEncoding ๋˜ํ•œ UTF-8๋กœ ๋ฌธ์ž ์ธ์ฝ”๋”ฉ ํ•ด์•ผํ•œ๋‹ค.
spring.datasource.url=jdbc:mysql://{DB์ฃผ์†Œ ๋˜๋Š” localhost}:{port}/{DB์ด๋ฆ„}?serverTimezone=UTC&characterEncoding=UTF-8 

#DB User Name 
spring.datasource.username={user name}

#DB Password
spring.datasource.password={user pw}

#error sql show : ์ฝ˜์†”์—์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ sql๋ฌธ์„ ๋ณด์—ฌ์ค€๋‹ค.
spring.jpa.show-sql=true

#DDL(create,alter,drop) > create/update
#create๋กœ ์„ค์ •ํ•  ๊ฒฝ์šฐ : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ชจ๋“  ํ…Œ์ด๋ธ”์„ ์‹คํ–‰๋งˆ๋‹ค ์ƒˆ๋กœ ๋งŒ๋“ ๋‹ค.
#update๋กœ ์„ค์ •ํ•  ๊ฒฝ์šฐ : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ธฐ์กด ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋”ํ•ด์ง„๋‹ค.
spring.jpa.hibernate.ddl-auto={create or update}

#SQL formatting print : Hibernate๊ฐ€ DB์— ์ˆ˜ํ–‰ํ•˜๋Š” ๋ชจ๋“  ์ฟผ๋ฆฌ๋ฌธ์„ ์ฝ˜์†”์— ์ถœ๋ ฅํ•œ๋‹ค.
spring.jpa.properties.hibernate.format_sql=true

SQL formatting print์™€ ๊ด€๋ จํ•œ ์ •๋ณด๋Š” ์•„๋ž˜ ๊ธ€์„ ์ถ”๊ฐ€๋กœ ์ฐธ๊ณ ํ•˜๊ธธ ๋ฐ”๋ž€๋‹ค.

์ฐธ๊ณ  [Spring] hibernate ์„ค์ • ์ •๋ณด


์œ„ ํŒŒ์ผ๋“ค์„ ์„ค์ •ํ•œ ๋’ค ์‹คํ–‰์‹œ์ผฐ์„ ๋•Œ, ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์ด๋‹ค.

์ด๋Š” ํ˜„์žฌ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๋‚ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์Šคํ‚ค๋งˆ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๊ผญ ์‹คํ–‰์‹œํ‚ค ์ „ ์Šคํ‚ค๋งˆ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•œ ํ›„, ์—†๋‹ค๋ฉด ์Šคํ‚ค๋งˆ๋ฅผ ์ƒ์„ฑํ•˜๊ธธ ๋ฐ”๋ž€๋‹ค.

์ฐธ๊ณ  SpringBoot MySQL ์—ฐ๋™

profile
๐Ÿ€ ูฉ(หŠแ—œห‹*)ูˆ ๐Ÿ€

0๊ฐœ์˜ ๋Œ“๊ธ€