Server/SpringBoot

[์›น๊ฐœ๋ฐœ์˜ ๋ด„, Spring] 2์ฃผ์ฐจ ๊ฐœ๋ฐœ์ผ์ง€(1) - RDBMS, H2, SQL

meeeeejin 2021. 7. 6. 20:37

 

2์ฃผ์ฐจ์—์„œ๋Š” ๊ธฐ์ดˆ์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆœ์„œ๋กœ ํ•™์Šตํ–ˆ๋‹ค. 

  1. RDBMS, H2, SQL
  2. JPA, Repository
  3. API, Lombok, DTO

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ ์ •๋ฆฌํ•  ๋ถ€๋ถ„์€ DB์™€ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋ถ€๋ถ„์ธ RDBMS, H2, SQL์— ๋Œ€ํ•œ ๋‚ด์šฉ์ด๋‹ค. 

 

 

RDBMS

๐Ÿ’ก RDBMS๋ž€?

RDBMS(Relational DataBase Management System)์€ ์ปดํ“จํ„ฐ์— ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค. 

๋Œ€ํ‘œ์ ์ธ ์ข…๋ฅ˜๋กœ๋Š” MySQL, PostgreSQL, Oracle Database ๋“ฑ์ด ์žˆ๋‹ค. 

 

๊ฐ•์˜์˜ 4์ฃผ์ฐจ๊นŒ์ง€๋Š” H2๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. H2๋Š” In-memory DB๋กœ, ์„œ๋ฒ„๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋™์•ˆ์—๋งŒ ๋‚ด์šฉ์„ ์ €์žฅํ•˜๊ณ  ์„œ๋ฒ„๊ฐ€ ์ž‘๋™์„ ๋ฉˆ์ถ”๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ๋‘ ์‚ญ์ œ๋œ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ๋‚ ๋ฆฌ๊ณ  ์‹ถ์œผ๋ฉด ์„œ๋ฒ„๋ฅผ ์žฌ์‹œ์ž‘ํ•˜๋ฉด ๋˜๋‹ˆ๊นŒ ์—ฐ์Šต์šฉ์œผ๋กœ๋Š” ๋”ฑ์ธ ๊ฒƒ ๊ฐ™๋‹ค. 

 

๋‚˜์ค‘์— ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•  ๋•Œ๋Š” MySQL์„ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. AWS RDS๋ผ๋Š” ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•ด MySQL์„ ๋ถ™์ผ ์˜ˆ์ •์ด๋‹ค. 

 

 

๐Ÿ’ก H2 ์›น์ฝ˜์†” ๋„์›Œ๋ณด๊ธฐ

1. src > main > resources > application.properties ํŒŒ์ผ์— ๋‹ค์Œ ์„ค์ •์„ ๋ถ™์—ฌ ๋„ฃ๋Š”๋‹ค. 

spring.h2.console.enabled=true
spring.datasource.url=jdbc:h2:mem:testdb

2. Week02Application.java ํŒŒ์ผ์„ Run ํ•œ๋‹ค. 

3. http://localhost:8080/h2-console ๋กœ ์ ‘์†ํ•ด์„œ ์•„๋ž˜ ํ™”๋ฉด๊ณผ ๊ฐ™์ด ๋œจ๋ฉด, Connect ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ๋‹ค. 

4. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ™”๋ฉด์ด ๋œจ๋ฉด ์›น ์ฝ˜์†” ๋„์šฐ๊ธฐ ์„ฑ๊ณต!!

 

 

 

 

SQL ๊ธฐ์ดˆ

 

์•ž์—์„œ ๋„์šด H2 ์›น์ฝ˜์†”์—์„œ SQL ๊ธฐ์ดˆ ์‹ค์Šต์„ ์ง„ํ–‰ํ–ˆ๋‹ค. 

 

 

๐Ÿ’ก SQL ๊ธฐ์ดˆ ์‹ค์Šตํ•˜๊ธฐ

์ด์ „ ์ฃผ์ฐจ์—์„œ ์–ธ๊ธ‰ํ–ˆ์—ˆ๋˜ courses๋ฅผ ๊ฐ€์ง€๊ณ  SQL ์˜ˆ์ œ๋“ค์„ ์‹คํ–‰ํ•ด๋ดค๋‹ค. 

 

- courses ํ…Œ์ด๋ธ” ์ƒ์„ฑํ•˜๊ธฐ

CREATE TABLE IF NOT EXISTS courses (
    id bigint(5) NOT NULL AUTO_INCREMENT, 
    title varchar(255) NOT NULL,
    tutor varchar(255) NOT NULL,
    PRIMARY KEY (id)
);

 

- courses ๋ฐ์ดํ„ฐ ์‚ฝ์ž…

INSERT INTO courses (title, tutor) VALUES
    ('์›น๊ฐœ๋ฐœ์˜ ๋ด„, Spring', '๋‚จ๋ณ‘๊ด€'), ('์›น๊ฐœ๋ฐœ ์ข…ํ•ฉ๋ฐ˜', '์ด๋ฒ”๊ทœ');

 

- courses ์กฐํšŒํ•˜๊ธฐ

SELECT * FROM courses;

 

 

 

๐Ÿ’ก SQL๊ณผ JPA

์›น์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด SQL์„ ๋ชจ๋‘ ๋ฐฐ์›Œ์•ผ ํ• ๊นŒ? ๋‹ต์€ No!

 

Spring Data JPA๋ผ๋Š” ๋…€์„์ด ๋‚ด๊ฐ€ ๋‚ด๋ฆฐ Java ๋ช…๋ น์–ด๋ฅผ SQL๋กœ ๋ฒˆ์—ญํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜๋Š” SQL์„ ์‹ฌ๋„ ์žˆ๊ฒŒ(?) ์•Œ ํ•„์š”๊นŒ์ง„ ์—†๋‹ค. ๋ฌผ๋ก  ๊ฐœ๋ฐœ์„ ์œ„ํ•ด์„œ๋ผ๋ฉด ์•„๋Š” ๊ฒŒ ์ข‹๊ฒ ์ง€๋งŒ... JPA๋Š” ์ •๋ง ๋ฉ‹์ง„ ๋…€์„์ด์•ผ~~๐Ÿ˜Ž

 

 

 

 

 

์ฐธ๊ณ  ์ž๋ฃŒ: ์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉํด๋Ÿฝ ์›น๊ฐœ๋ฐœ์˜ ๋ด„, Spring 2์ฃผ์ฐจ ๊ฐ•์˜์ž๋ฃŒ

 

 

728x90