์ถ์ฒ
ChatGPT
https://en.wikipedia.org/wiki/Persistence_framework
์์์ฑ ํ๋ ์์ํฌ Persistence Framework
์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค(ํนํ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค) ์ฌ์ด์์ ์ ๋ณด์ ์ ์ฅ ๋ฐ ๊ฒ์์ ์ง์ํ๋ ๋ฏธ๋ค์จ์ด. ์๊ตฌ์ ์ ์ ์ฅํ๋ ๋ฐ์ดํฐ์ ๋ํด ์ ์ฅ๊ณผ ํ์ฉ ์ฌ์ด์์ ๊ฐ๋ ์ ์ด๊ณ ๊ธฐ์ ์ ์ธ ์ฐจ์ด๋ฅผ ์ด์ด์ฃผ๋ ์ถ์ํ ๊ณ์ธต ์ญํ ์ ํ๋ค.
๋ฐ์ดํฐ๋ฅผ ์๊ตฌ์ ์ผ๋ก ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐ ๋์์ ์ฃผ๋ ์ํํธ์จ์ด ๋๊ตฌ.
์ฃผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ํธ์์ฉ์ ๊ฐ์ํํ๊ณ , ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ๋งคํํ๊ฑฐ๋ ์ ์ฅํ ์ ์๋๋ก ํด์ค๋ค.
๐ค๋ฏธ๋ค์จ์ด
์ํํธ์จ์ด ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์ด์์ฒด์ ๋๋ ๋ค๋ฅธ ์๋น์ค ๊ฐ์ ํต์ ๊ณผ ๋ฐ์ดํฐ ๊ด๋ฆฌ ๋ฑ์ ์ค๊ฐํ๋ ์ํํธ์จ์ด ๊ณ์ธต
๐ค๋ฐ์ดํธ์ ์ ์ฅ๊ณผ ํ์ฉ ์ฌ์ด์์ ๊ฐ๋ ์ ์ด๊ณ ๊ธฐ์ ์ ์ด ์ฐจ์ด๋ฅผ ์ด์ด์ฃผ๋ ์ถ์ํ ์ญํ ์ด๋ ๊ฒ์ด ๋ฌด์์ธ๊ฐ?
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ๊ฐ์ ๋ณต์กํ ์ฐจ์ด๋ฅผ ๊ฐ์ถ๊ณ , ๋ ์ง๊ด์ ์ด๊ณ ์ผ๊ด๋ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๊ฒ ํด์ค๋ค๋ ์๋ฏธ.
- ๊ฐ๋ ์ , ๊ธฐ์ ์ ์ฐจ์ด -> ๋ฐ์ดํฐ ์ ์ฅ์ ์ฃผ๋ก ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ด๋ค์ง๋ฉฐ, ์ด ๋ฐ์ดํฐ๋ ํ ์ด๋ธ๊ณผ ํ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๊ตฌ์กฐํ๋๋ค. ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํด ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ค. ์ด ๋์ ๊ฐ๋ ์ ์ฐจ์ด๋ฅผ ์ด์ผ๊ธฐํ๋ค.
์์์ฑ ํ๋ ์์ํฌ๋ ์ด๋ฌํ ์ฐจ์ด๋ฅผ ์ถ์ํํด์ ๊ฐ๋ฐ์๊ฐ ์ง์ SQL์ ์์ฑํ์ง ์๊ณ ๋ ๊ฐ์ฒด ์งํฅ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ์์ฉํ ์ ์๊ฒ ๋๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ๊ฐ๋ฐ์๋ ๋ฐ์ดํฐ ์ ์ฅ์์ ๋ณต์กํ ์ธ๋ถ ์ฌํญ์ ๋ชฐ๋ผ๋, ๊ฐ์ฒด ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ ์ ์ฅ๊ณผ ์กฐํ๋ฅผ ์ฝ๊ฒ ํ ์ ์๋ค.
์์์ฑ ํ๋ ์์ํฌ๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ
1. ๊ฐ์ฒด-๊ด๊ณ ๋งคํ ORM Object-Relational Mapping
๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๊ฐ์ฒด์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ ๊ฐ ๋งคํ์ ์๋์ผ๋ก ์ฒ๋ฆฌํด ์ค๋ค. ์๋ฅผ ๋ค์ด, Java์ JPA(Java Persistence API), Hibernate ๋ฑ์ด ์ฌ๊ธฐ์ ์ํ๋ค.
ORM ๋ฐฉ์์ ์ฌ์ฉํ๋ ์์์ฑ ํ๋ ์์ํฌ์์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ด๋ค.
2. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ์ฐ์ ์ถ์ํ
๋ณต์กํ SQL ์ฟผ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ์ฐ์ ์ฝ๋์์ ์ฝ๊ฒ ๋ค๋ฃฐ ์ ์๋๋ก ๋๋๋ค. ์์์ฑ ํ๋ ์์ํฌ๋ ์ด๋ฌํ ์์ ์ ๊ณ ์์ค API๋ก ์ ๊ณตํด, ๊ฐ๋ฐ์๋ ์ธ๋ถ์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ๋ณด๋ค๋ ๋น์ฆ๋์ค ๋ก์ง์ ์ง์คํ ์ ์๋ค.
๐ค ๊ณ ์์ค API๋ : ๋ณต์กํ ๋ด๋ถ ๋์์ ๊ฐ์ถ๊ณ , ๊ฐ๋ฐ์๊ฐ ๋ ์ง๊ด์ ์ด๊ณ ๊ฐ๋จํ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์์คํ ๊ณผ ์ํธ์์ฉํ ์ ์๋๋ก ์ ๊ณต๋๋ ์ถ์ํ๋ ์ธํฐํ์ด์ค
Mapper ๋ฐฉ์์ ์ฌ์ฉํ๋ ์์์ฑ ํ๋ ์์ํฌ์์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ด๋ค.
3. ํธ๋์ญ์ ๊ด๋ฆฌ
์ฌ๋ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ์ฐ์ ํ๋์ ํธ๋์ญ์ ์ผ๋ก ๋ฌถ์ด ์ผ๊ด๋ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๊ฒ ํด์ค๋ค.
4. ์บ์ฑ
๋์ผํ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ๊ฐ์ ธ์ค๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์กฐํ ๊ฒฐ๊ณผ๋ฅผ ์บ์ํ ์ ์๋ค.
์์์ฑ ํ๋ ์์ํฌ์ ๋ ๊ฐ์ง ๋ฐฉ์
1. Mapper
- SQL Mapper๋ผ๊ณ ๋ ๋ถ๋ฆฐ๋ค. SQL์ ์ง์ ์์ฑํด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ์์ฉํ๋ ๋ฐฉ์์ด๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์์๋ ๊ฐ๋ฐ์๊ฐ SQL ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๊ณ , ๋งคํผ ํ๋ ์์ํฌ๊ฐ ์ด๋ฅผ ๊ฐ์ฒด์ ๋งคํํด์ฃผ๋ ์ญํ ์ ํ๋ซ.
- ์: MayBatis
2. ORM Objected-Relational Mapping
- ๊ฐ์ฒด ์งํฅ ์ธ์ด์ ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ๊ณผ ์๋์ผ๋ก ๋งคํํด์ฃผ๋ ๋ฐฉ์์ด๋ค. ์ฆ, ๊ฐ๋ฐ์๊ฐ ์ง์ SQL์ ์์ฑํ ํ์ ์์ด, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์ ๊ณ ์์ค์ ๊ฐ์ฒด ์กฐ์์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ค.
- ๐ค๊ณ ์์ค์ ๊ฐ์ฒด ์กฐ์์ ์๋ฏธ : ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ณต์กํ SQL ๊ตฌ๋ฌธ์ ์ ๊ฒฝ ์ฐ์ง ์๊ณ ๊ฐ์ฒด ์งํฅ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ๋ฐฉ์
- ์ : Hibernate , JPA, Entity Framework
- ๐ค ์๋๋ก์ด๋ Room ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ORM ๋ฐฉ์์ ์ฐ๋ ์์์ฑ ํ๋ ์์ํฌ ๊ฐ์๋ฐ
- ๋ง๋ค. Room์ SQLite ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์์ ๋์ํ๋ฉด์, ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ ๊ฐ์ฒด๋ก ๋งคํํ๋ค. ์ด ๊ณผ์ ์์ SQL ์ฟผ๋ฆฌ๋ฅผ ์ง์ ์์ฑํ ํ์ ์์ด, ๊ฐ์ฒด ์งํฅ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๊ฒ ๋์์ค๋ค.
์์์ฑ ํ๋ ์์ํฌ์์ ๋์์ผ๋ก ํ๋ ์๊ตฌ์ ์ผ๋ก ์ ์ฅํด์ผ ํ๋ ๋ฐ์ดํฐ์๋ ๋ฌด์์ด ์๋๊ฐ
์๊ตฌ์ ์ผ๋ก ์ ์ฅํด์ผ ํ๋ ๋ฐ์ดํฐ๋ ์ปดํจํฐ ์์คํ ์ด ์ฌ๋ถํ ๋๊ฑฐ๋ ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋๋๋ผ๋ ์์ค๋์ง ์๊ณ ์ง์์ ์ผ๋ก ๋ณด๊ด๋์ด์ผ ํ๋ ์ ๋ณด๋ฅผ ์๋ฏธํ๋ค.
-> ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋๋ ๋ฐ์ดํฐ๋ค์ด๊ตฌ๋
1. ์ฌ์ฉ์ ๋ฐ์ดํฐ
์ฑ์ด๋ ์๋น์ค์์ ์ฌ์ฉ์์ ํ๋กํ ์ ๋ณด, ์ค์ , ๊ธฐ๋ก ๊ฐ์ ๋ฐ์ดํฐ๋ ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋๋๋ผ๋ ๋ค์ ์ฌ์ฉํ ์ ์์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ์๊ตฌ์ ์ผ๋ก ์ ์ฅ๋์ด์ผ ํ๋ค. ์๋ฅผ ๋ค์ด, ์์ ๋ฏธ๋์ด์์ ์ฌ์ฉ์๊ฐ ๋จ๊ธด ๊ฒ์๋ฌผ์ด๋ ๋ฉ์์ง ๊ฐ์ ์ ๋ณด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋์ด์ผ ํ๋ค.
2. ํธ๋์ญ์ ๊ธฐ๋ก
์ํ ์์คํ ์ด๋ ์ ์ ์๊ฑฐ๋ ์ฌ์ดํธ์ ๊ฒฐ์ ๋ด์ญ, ์ฃผ๋ฌธ ๊ธฐ๋ก ๋ฑ์ ๋ฐ๋์ ์๊ตฌ์ ์ผ๋ก ์ ์ฅ๋์ด์ผ ํ๋ค. ์ด ๋ฐ์ดํฐ๋ ๋ฒ์ ์ฆ๊ฑฐ ์๋ฃ๊ฐ ๋ ์ ์๊ณ , ํ์ ๊ณ ๊ฐ์ด๋ ์์คํ ์ ํ์ธ ๋ฐ ๊ฐ์ฌ ๊ณผ์ ์์ ํ์์ ์ด๋ค.
3. ์ ํ๋ฆฌ์ผ์ด์ ์ํ
๋ง์ ์๋น์ค๋ค์ ์ํ ์ ๋ณด๋ฅผ ์ ์ฅํด์, ์์คํ ์ด ์ค๋จ๋๋๋ผ๋ ์ฌ๋ถํ ํ์ ์ค๋จ๋ ์ง์ ์์ ๋ค์ ์์ ์ ์ด์ด๊ฐ๋ผ ์ ์๋๋ก ํ๋ค. ์๋ฅผ ๋ค์ด, ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ์ ๋ฌธ์ ํธ์ง๊ธฐ์์๋ ์ฌ์ฉ์๊ฐ ํธ์งํ๋ ๋ฌธ์๋ฅผ ๊ณ์ ์ ์ฅํด๋์ด์ ์์คํ ์ด ์ค๋จ๋๋๋ผ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ํ ์ ์๋ค.
4. ๋ก๊ทธ ๋ฐ์ดํฐ
์์คํ ์ด์์ด๋ ๋ณด์ ๊ฐ์๋ฅผ ์ํด ์์ฑ๋ ๋ก๊ทธ๋ ๋ถ์์ ์ํด ์ค๋ ๊ธฐ๊ฐ ๋ณด๊ด๋ ํ์๊ฐ ์๋ค. ์ด ๋ฐ์ดํฐ๋ฅผ ํตํด ์์คํ ์ค๋ฅ๋ ๋ณด์ ์นจ์ ์ ์ถ์ ํ ์ ์์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ์๊ตฌ์ ์ธ ์ ์ฅ์ด ์ค์ํ๋ค.
'๋น ๊ตฌ๋ฉ ์ฑ์ฐ๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Kotlin] ์ ํ์ผ ํ๋์ ์ฌ๋ฌ ํด๋์ค๋ค์ ์ ์ธํ ์ ์๊ฒ ํ์๊น (0) | 2024.10.14 |
---|---|
[Kotlin] statement(๋ฌธ)์ expression(์) (0) | 2024.10.14 |
[Java] IO, NIO ์ฐจ์ด (1) | 2024.10.14 |
[Java] I/O Channel (0) | 2024.10.14 |
[Java] I/O Buffer (1) | 2024.10.14 |