๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํ ์ด๋ธ์ด๋ผ๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ๋ฐ๋ฉด์ JAVA ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ์๋ ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ค. ์ด ๋ถ์ผ์น๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ ์ฐ๋ฆฌ๋ ๋ฐ์ดํฐ ๋งคํ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ค.
Persistence Framework (ํผ์์คํด์ค ํ๋ ์์ํฌ) : ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ์ ๋ฐ์ดํฐ ๋ณํ ๋ฐ ๋งคํ์ ๋๋ ํ๋ ์์ํฌ (์์์ฑ ๊ณ์ธต)
๋ํ์ ์ผ๋ก ์ฌ์ฉํ๋ ํ๋ ์์ํฌ๊ฐ MyBatis ์ JPA ๊ฐ ์๋๋ฐ
MyBatis๋ฅผ ์ฌ์ฉํ์ฌ ์ฟผ๋ฆฌ๋ฌธ์ ์์ฑํ ๊ฒฝ์ฐ, SQL ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์๋ฐ ๊ฐ์ฒด๋ก ๋ณํํ๊ธฐ ์ํด์ DTO ๋ฅผ ๋ณ๋๋ก ์์ฑํ์ฌ ๋งคํํ๊ฒ ๋๋ค. ๊ฐ์ฒด ์๊ฐ ๋ง์์ง ๊ฒฝ์ฐ ๊ด๋ฆฌ๊ฐ ๋ณต์กํด์ง๋ค.
JPA ๋ฅผ ํ์ฉํ๋ฉด HIbenate ์ ๊ฐ์ ORM ๊ตฌํ์ฒด๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ <-> ์๋ฐ ๊ฐ์ฒด (์ํฐํฐ) ๊ฐ์ ์๋ ํจํ ์ด ๋์ด, ๊ฐ๋ฐ์๋ ๊ฐ์ฒด(์ํฐํฐ) ์ค์ฌ์ผ๋ก ๊ฐํธํ๊ฒ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ์ ์๊ฒ ๋๋ค. (๊ฐ์ฒด ์ค์ฌ ๋ฐ์ดํฐ ๊ด๋ฆฌ ์๋ํ)
์๋๋ ๋งคํ ํ๋ ์์ํฌ ์ข ๋ฅ๋ณ๋ก ์ฐจ๋ก๋๋ก ์ดํดํ๊ธฐ ์ฝ๊ฒ ์ ๋ฆฌํด๋์๋ค.
๐ SQL ๊ธฐ๋ฐ ๋งคํ : SQL ์ฟผ๋ฆฌ๋ฅผ ์ง์ ์์ฑํ๋ฉฐ, ์์ฑ๋ SQL๊ณผ ๊ฐ์ฒด๋ฅผ ๋งคํ. (Mybatis, JDBC)
- JDBC: ์๋ฐ์ ๊ธฐ๋ณธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋ ๊ธฐ์ ๋ก, SQL ์ฟผ๋ฆฌ๋ฅผ ์ง์ ์์ฑํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ์์ฉํ๋ ๋ฐฉ์. ๋ฐ๋ณต์ ์ธ ์ฝ๋ ์์ฑ์ด ๋ง์ ์ ์ง๋ณด์๊ฐ ์ด๋ ค์
- MyBatis: SQL ์ค์ฌ์ ๋ฐ์ดํฐ ๋งคํ ํ๋ ์์ํฌ. (์ํฐํฐ ๊ฐ ๊ด๊ณ๋ฅผ ์๋์ผ๋ก ๊ด๋ฆฌ ๋ถ๊ฐ, ์๋์ฒ๋ฆฌ + ๊ด๋ฆฌ ์ด๋ ค์)
๐ ๊ฐ์ฒด-๊ด๊ณ ๋งคํ(ORM) : ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ๊ฐ์ฒด์งํฅ์ ์ผ๋ก ๋งคํ (Hibernate, JPA)
- JPA (Java Persistence API): ์๋ฐ์ ํ์ค ORM (JPQL ์ง์ ์์ฑ , EntityManager ์ง์ ๊ด๋ฆฌ)
- JPA > Hibernate: JPA์ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๊ตฌํ์ฒด๋ก, ORM ๊ธฐ๋ฅ ์ ๊ณต. (๊ฐ์ฒด-๊ด๊ณ ๋งคํ)
๊ณต์๋ฌธ์ : https://hibernate.org/orm/
- JPA > JPQL : JPA ์์ ์ ๊ณตํ๋ ์ฟผ๋ฆฌ์ธ์ด, ๊ฐ์ฒด ์ค์ฌ์ , SQL ๊ณผ ์ ์ฌํ ๋ฌธ๋ฒ (๋ฌธ์์ด๊ธฐ๋ฐ → ๋ฐํ์์ ์ค๋ฅ ๋ฐ๊ฒฌ๊ฐ๋ฅ) , ์ ์ ์ฟผ๋ฆฌ์ ์ ๋ฆฌํจ
๊ณต์๋ฌธ์ : https://docs.oracle.com/html/E13946_01/ejb3_langref.html#ejb3_langref_stmnttypes - JPA > Spring Data JPA : Spring ํ๋ ์์ํฌ ํ์ฅ ๋ชจ๋ , ์๋ํ๋ ๊ธฐ๋ฅ์ด ๋ง์, JPA๋ฅผ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ์ฌ์ฉ ๊ฐ๋ฅ (๋ฉ์๋ ๊ธฐ๋ฐ ์๋ ์ฟผ๋ฆฌ ์์ฑ ๋ฑ)
๊ณต์๋ฌธ์ :https://spring.io/projects/spring-data-jpa
(+) QueryDSL : ํ์
์์ ์ฑ, ๋์ SQL ์ฟผ๋ฆฌ ์์ฑ ์ง์ , JAVA ๊ธฐ๋ฐ ์ฟผ๋ฆฌ ์์ฑ ํ ์ ์๊ฒ ํด์ฃผ๋ ๋๊ตฌ (์ฝ๋๊ธฐ๋ฐ → ์ปดํ์ผ์ ์ค๋ฅ ๋ฐ๊ฒฌ ๊ฐ๋ฅ), ๊ฐ์ฒด ์ค์ฌ์ ๋ฐ์ดํฐ ์กฐํ์ ์ ๋ฆฌ
๊ณต์ ๋ฌธ์ :http://querydsl.com/static/querydsl/3.6.3/reference/ko-KR/html_single/#d0e81
๐ NoSQL ๋ฐ์ดํฐ ๋งคํ : NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค(MongoDB..)์์ ๋ฐ์ดํฐ ๋งคํ ์ง์ (Mongoose (Node.js) / Morphia (MongoDB์ Java))