[GP] Spring boot์์ DBMS๋ฅผ ์ฐ๋ํ๋ ๋ฐฉ๋ฒ JPA ๊ณ ๊ธํธ
์ด ๊ธ์ N.K Dev Lab์์ ์์ฑ๋ ๊ธ์
๋๋ค.
์๋ ํ์ธ์. Spring ๊ด๋ จ ๊ธ์ ์ ๋ง ์์ด์ง๊ฐ ๋๋ฌด ์ค๋๋์๋ค์โฆใ ใ ์์ฆ ๋ฐ์ดํฐ ๋ถ์ผ์์ ์ผํ๋ค๋ณด๋ R์ ๋ค๋ฃจ๋ฉด์ ๋ฐฑ์๋์ ๋ํ ํฌ์คํ ์ด ๋ง์ด ๋ฐ๋ ค์๋ค์.. ์์ผ๋ก๋ Spring์ ์ด์ฉํ ์คํ ํ๋ก์ ํธ์ ์ฐธ์ฌ ์ค์ด๋ ๋ค์ ์ฌ๊ฑด์ ์ํด์๋ผ๋ ์ฒ์ฒํ ํ๋์ฉ ๊ธ์ ์์ฑํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ด๋ฒ์๋ ์ง๋ ๊ธ์ ์ด์ด์ JPA ๊ณ ๊ธํธ์ ๋ํด ์์ฑํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ์๋ ์ค๋๋์์๋ ๋ถ๊ตฌํ๊ณ ๊ณ ๊ธํธ์ ๋ฌด์์ ์ ์ด์ผํ ์ง ๋ช ์๊ฐ ๋์ด ์๋ค์. ์ค๋์ ๊ทธ ๋ถ๋ถ์ ๋ค๋ค๋ณด๊ฒ ์ต๋๋ค.
SQL๊ณผ HQL
SQL์ Structed Query Language์ ์ฝ์๋ก DBMS์ ๋ฐ์ดํฐ๋ฅผ ์กฐ์/์ ์ดํ๋ ์ฟผ๋ฆฌ ์ธ์ด ์ค์ ํ๋์ ๋๋ค. SQL Server์์๋ T-SQL์ ์ฌ์ฉํ๋ ๊ฒ์ฒ๋ผ ๋ง์ด์ฃ .
HQL์ ๊ทธ๊ฒ๊ณผ ์ ์ฌํ๊ฒ Hibernate Query Language์ ์ฝ์๋ก ๊ฐ์ฒด ์งํฅ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ค๋ฃจ๋๋กํ๋ ์ฟผ๋ฆฌ ์ธ์ด์ ๋๋ค. Spring boot์์ ์ฃผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ค๋ฃฐ ๋ ์ฌ์ฉํ๋ hibernate ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฟผ๋ฆฌ๋ก ์ง์ํ ๋ ์ฌ์ฉํ๋ ์ธ์ด ์ค ํ๋์ด๋ฉฐ ๋ฌด์๋ณด๋ค ์ฅ์ ์ SQL์์๋ ์ฌ๋ฌ ํ ์ด๋ธ์ ์์ ํ ๋ ๋ช ์์ ์ธ JOIN ์ฟผ๋ฆฌ๋ฅผ ์๊ตฌํ์ง๋ง HQL์ ๊ทธ๋ฌํ ์ฟผ๋ฆฌ๋ฅผ ์๊ตฌํ์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค.
HQL์ ์ฅ๋จ์
๊ทธ๋ผ ๊ฐ๋จํ HQL์ด SQL์ ๋นํ์ฌ ์ด๋ ํ ์ ์ด ์ข๊ณ ๋์์ง๋ฅผ ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค.
- ์ฅ์
- ๊ฐ์ฒด์งํฅ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- ์์ ๊ธฐ๋ณธํธ์์ JPA๋ฅผ ๋ค๋ค๋ฏ์ด ํ ์ด๋ธ ์์ฑ, ๋ณ๊ฒฝ, ๊ด๋ฆฌ๊ฐ ์ฝ์ต๋๋ค.
- ์ ์ ์ธ ์ฟผ๋ฆฌ๋ฅผ ์ ์ํ์ง ์๊ณ ๊ฐ์ฒด์ ์ง์คํ๊ธฐ ๋๋ฌธ์ ๋น ๋ฅธ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ๋จ์
- ์ผ๋ฐ์ ์ธ SQL Query๋ฅผ ์ฌ์ฉํ ๋ ๋ณด๋ค ์ฑ๋ฅ์ ์ธ ์ด์๊ฐ ์กด์ฌํฉ๋๋ค.
- ๋ฐ์ดํฐ ์์ค์ ๋ํด ๋ฏผ๊ฐํฉ๋๋ค.
ํ์คํ ํธํ๋งํผ ๋จ์ ์ด ์กด์ฌํฉ๋๋ค. ์ ์ ์ธ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ทธ๋งํผ ๋น ๋ฅด๋ค๋ ์ฅ์ ์ด ์๋ ๋ฐ๋ฉด ๊ฐ๋ฐ์ ์กฐ๊ธ ์ด๋ ค์์ง๊ณ ์ฝ๊ฒ ๊ฐ๋ฐํ๋ ค๊ณ ํ๋ค๋ฉด ๊ทธ๋งํผ ์ฑ๋ฅ์ ๊ฐ์๋ ์กฐ๊ธ์ ๊ฐ์ํด์ผ ํฉ๋๋ค.
HQL์ ์ฌ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ
๊ธฐ๋ณธํธ์์ ๊ฐ๋จํ ์ฝ๋ ์์ฑ์ผ๋ก CRUD๋ฅผ ์์ฑํ์ต๋๋ค. ์ด๋ฅผ ํตํ์ฌ Create, Read, Update, Delete๋ฅผ ๋ณ๋์ ์ฟผ๋ฆฌ ์์ด ์ฝ๊ฒ ์งํํ ์ ์์๋๋ฐ์. ๊ทธ๋ ๋ค๋ฉด ์ด๋จ ๋ ์ฟผ๋ฆฌ ์ธ์ด๋ฅผ ์ฌ์ฉํด์ผ ํ ๊น์?
์ฝ๋๋ฅผ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. (์ด๋ฒ ํฌ์คํธ์์๋ Kotlin ์ฝ๋๋ง์ ๋ค๋ฃฐ ๊ฒ์ ๋๋ค.)
1 | package xyz.neonkid.jpaexample.Model |
1 | package xyz.neonkid.jpaexample.Model |
๊ธฐ๋ณธํธ์์ ์ด ๋๊ฐ์ง ์ฝ๋๋ง์ ๊ฐ์ง๊ณ REST API๋ฅผ ํธ์ถํ์ฌ Item ํ ์ด๋ธ์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๊ณ , ๊ฐ์ ์ถ๊ฐํ๋ ๊ฒ์ด ๊ฐ๋ฅํ์ต๋๋ค. ๊ทธ๋ฐ๋ฐ, ์ฌ๊ธฐ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ ๊ฐ๋จํ ์ฟผ๋ฆฌ ๋ง๊ณ ๋๋ง์ ์กฐ๊ฑด์ ๊ฑธ์ด์ค์ ๋๋ง์ ๋ฉ์๋๋ฅผ ์ ์ํด์ผํ ๋๊ฐ ์์ต๋๋ค. ์ด๋ ํ ๊ฒฝ์ฐ๊ฐ ์์๊น์?
์๋ฅผ ๋ค์๋ฉด, ์ง๊ธ์ GET ๋ฉ์๋๋ฅผ ์ด์ฉํด์ Items ํ ์ด๋ธ์ ๋ชจ๋ ์์๋ฅผ ๊ฐ์ ธ์ค๊ฒ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ฑ๋์ด ์์ต๋๋ค. ํ์ง๋ง ํน์ ์์ดํ ํ ๊ฐ์ง๋ง์ ๊ณ ๋ฅด๊ณ ์ถ๋ค๋ฉด? ๋ฌผ๋ก GET ๋ฉ์๋๋ฅผ ํตํด์ ๋ชจ๋ ์์ดํ ์์๋ฅผ ๊ฐ์ ธ์จ ๋ค์ ํด๋ผ์ด์ธํธ ๋จ์์ ์์ธํ๋ ๋ฐฉ๋ฒ๋ ์์ ๊ฒ์ ๋๋ค. ํ์ง๋ง ์ด ๋ฐฉ๋ฒ์ ํ ์ด๋ธ ๋ด์ item์ด 10,000๊ฐ, 100,000๊ฐ ์๋ ๋ฌด์ํ ๊ฒฝ์ฐ๊ฐ ์๊ธธ ์ ์๊ธฐ ๋๋ฌธ์ ์ ๋ง ์ข์ ๋ฐฉ๋ฒ์ด ์๋๋๋ค.
์ด๋ด ๊ฒฝ์ฐ HQL์ ์ฌ์ฉํด์ ์ฝ๋๋ฅผ ์์ฑํด์ฃผ์๋ฉด ๋ฉ๋๋ค.
'Programming > Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring Cloud] - 3. API ์๋ฒ๋ก ์ค์ ๊ฐ ๋ถ๋ฌ์ค๊ธฐ (0) | 2019.12.29 |
---|---|
[Spring Cloud] - 2. Github and Configuration Server (0) | 2019.12.26 |
[Spring Cloud] - 1. Configuration Server ๊ตฌ์ฑ (0) | 2019.12.22 |
[GP] Spring boot์์ REST API ๊ฐ๋ฐ ์์ํด๋ณด๊ธฐ (0) | 2019.11.08 |
[GP] Spring boot์์ DBMS๋ฅผ ์ฐ๋ํ๋ ๋ฐฉ๋ฒ - JPA ๊ธฐ๋ณธํธ (0) | 2018.06.06 |