-
์ค๋ฌด์์ Map์ ์ด๋์ ์ฐ์ผ๊น?
-
1. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ ์ฝ๋ ์ ์ฅ ๋ฐ ์กฐํ
-
2. ๋น๋ ์ ๊ณ์ฐ ๋ฐ ์ง๊ณ ์์
-
3. ์ค์ ํ์ผ ๋ฐ์ดํฐ ์ ์ฅ
-
4. ์บ์ฑ (Caching)
-
5. ํค์ ๋ฐ๋ฅธ ๋ค๊ตญ์ด ์ง์
-
6. ๊ทธ๋ํ ๋๋ ๋คํธ์ํฌ ๋ฐ์ดํฐ ๊ตฌ์กฐ ํํ
-
7. HTTP ์์ฒญ ํ๋ผ๋ฏธํฐ ์ฒ๋ฆฌ
-
8. Enum๊ณผ ์ฐ๊ณํ ๋ฐ์ดํฐ ๋งคํ

์ค๋ฌด์์ Map์ ์ด๋์ ์ฐ์ผ๊น?
์ฐ๋ฆฌ๊ฐ ์๋ ์๋ฐ์ ๋งต(Map)์ ํค-๊ฐ ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค.
์ฌ๋์ โ์ด๋ฆ = ํ๊ธธ๋โ, โ์์ผ = ๋ช ์ ๋ฉฐ์น โ ๋ฑ์ผ๋ก ๊ตฌ๋ถํ ์ ์๋ฏ์ด
๋งต(Map) ์ ๋์ ๊ด๊ณ๋ฅผ ์ฝ๊ฒ ํํํ ์ ์๊ฒ ํด์ฃผ๋ ์๋ฃํ์ด๋ค.
๋งต์ ๋ค๋ฅธ ์ธ์ด์๋ ์๋ ์๋ฃํ์ผ๋ก, associative array ๋๋ hash๋ผ๊ณ ๋ ๋ถ๋ฆฐ๋ค.
๋งต์ ๋ฆฌ์คํธ๋ ๋ฐฐ์ด์ฒ๋ผ ์์ฐจ์ ์ผ๋ก(sequential) ์์๊ฐ์ ๊ตฌํ์ง ์๊ณ , ํค(key)๋ฅผ ์ด์ฉํด ๊ฐ(value)์ ์ป๋๋ค. ์ฐ๋ฆฌ๊ฐ baseball์ด๋ ๋จ์ด์ ๋ป์ ์ฐพ์ ๋ ์ฌ์ ์ 1์ชฝ๋ถํฐ ๋ชจ๋ ์ฝ์ง ์๊ณ baseball์ด๋ผ๋ ๋จ์ด๊ฐ ์๋ ๊ณณ์ ์ฐพ์ ํ์ธํ๋ ๊ฒ๊ณผ ๊ฐ๋ค. ๊ทธ๋์ Map์ ํ์ฉํ๋ฉด ๋๋์ ๋ฐ์ดํฐ์์๊ฒ์ ์๋๊ฐ ๋น ๋ฅด๊ณ ์ค๋ณต๊ฐ ๊ด๋ฆฌ๊ฐ ์ฝ๋ค.
๋งต ์๋ฃํ์๋ HashMap, LinkedHashMap, TreeMap ๋ฑ์ด ์๋ค.

๊ทธ๋ ๋ค๋ฉด ์ค์ ๋ก ์ด๋ค ๊ฒฝ์ฐ์ Map์ ์ฌ์ฉํ ๊น?
1. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ ์ฝ๋ ์ ์ฅ ๋ฐ ์กฐํ

๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ ๋ ์ฝ๋๋ ์ผ๋ฐ์ ์ผ๋ก ๊ณ ์ ID๋ก ์๋ณ๋จ
์ด ๊ฒฝ์ฐ Map์ ์ฌ์ฉํ์ฌ ID์ ํด๋น ๋ ์ฝ๋๋ฅผ ๋งคํ๊ฐ๋ฅ
ํน์ ID์ ๋ ์ฝ๋๋ฅผ ๋น ๋ฅด๊ฒ ์กฐํํ ์ ์์ด ์บ์ ์ญํ ์ ํจ.

2. ๋น๋ ์ ๊ณ์ฐ ๋ฐ ์ง๊ณ ์์

์๋ฅผ ๋ค์ด, ์ธ์คํ๊ทธ๋จ์ด๋ ํ์ด์ค๋ถ ๊ฐ์ ์์ ๋ฏธ๋์ด์ฑ์์
ํด์ํ๊ทธ ์ฌ์ฉ ๋น๋๋ฅผ ์ถ์ ํ ๋ Map์ด ์ ์ฉํจ.
๊ฐ ํด์ํ๊ทธ๋ฅผ ํค๋ก ์ฌ์ฉํ๊ณ , ๊ทธ ๋น๋๋ฅผ ๊ฐ์ผ๋ก ์ ์ฅํด ๋ฐ์ดํฐ๋ฅผ ์ง๊ณ

3. ์ค์ ํ์ผ ๋ฐ์ดํฐ ์ ์ฅ

์ ํ๋ฆฌ์ผ์ด์ ์ ์ค์ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ ๋, ์ค์ ํค์ ๊ฐ์ Map์ ์ ์ฅ
์๋ฅผ ๋ค์ด, ํ๊ฒฝ ์ค์ ์ ๋ก๋ํด ํค-๊ฐ ์์ผ๋ก ์ ์ฅํ๊ณ ํ์ํ ๋ ๋น ๋ฅด๊ฒ ์กฐํ
์๋ฐ์ JDBC URL, ๊ฒฝ๋ก, ํจ์ค์๋ ๋ฑ ์ ์ฅ

4. ์บ์ฑ (Caching)

์์ฃผ ์กฐํ๋๋ ๋ฐ์ดํฐ๋ฅผ ์บ์ฑํ ๋ Map์ด ์์ฃผ ์ฌ์ฉ
์๋ฅผ ๋ค์ด, ๋ก๊ทธ์ธํ ์ฌ์ฉ์์ ์ธ์ ์ ๋ณด๋ฅผ Map์ ์ ์ฅํ์ฌ ๋น ๋ฅด๊ฒ ์ ๊ทผ
์ด์ : DB์ ๋ฐ๋ณต์ ์ธ ์์ฒญ์ ๋ณด๋ด๋ ๋์ , ์บ์์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์.

5. ํค์ ๋ฐ๋ฅธ ๋ค๊ตญ์ด ์ง์

์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ค๊ตญ์ด ์ง์์ ๊ตฌํํ ๋, ๊ฐ ์ธ์ด๋ณ ๋ฉ์์ง๋ฅผ Map์ ์ ์ฅํด ๊ด๋ฆฌ
ํค๋ก ๋ฌธ์์ด์ ์๋ณ์(ID)๋ฅผ ์ฌ์ฉํ๊ณ , ๊ฐ์ผ๋ก ๋ฒ์ญ๋ ๋ฌธ๊ตฌ๋ฅผ ์ ์ฅ

6. ๊ทธ๋ํ ๋๋ ๋คํธ์ํฌ ๋ฐ์ดํฐ ๊ตฌ์กฐ ํํ

๊ทธ๋ํ๋ ๋คํธ์ํฌ ๊ตฌ์กฐ๋ฅผ ๊ตฌํํ ๋, ์ธ์ ๋ฆฌ์คํธ๋ฅผ Map์ผ๋ก ๊ตฌํ ๊ฐ๋ฅ
์๋ฅผ ๋ค์ด, ์์ ๋คํธ์ํฌ์์ ํ๋ก์ ๊ด๊ณ๋ฅผ ๋ํ๋ผ ๋ ์ฐ์

7. HTTP ์์ฒญ ํ๋ผ๋ฏธํฐ ์ฒ๋ฆฌ
์น ์ ํ๋ฆฌ์ผ์ด์ ์์ HTTP ์์ฒญ์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ฒ๋ฆฌํ ๋
Map์ ์ฌ์ฉํ์ฌ ํ๋ผ๋ฏธํฐ ํค์ ๊ฐ์ ๊ด๋ฆฌ
ํนํ Spring๊ณผ ๊ฐ์ ํ๋ ์์ํฌ์์ ์์ฒญ ํ๋ผ๋ฏธํฐ๋ฅผ Map์ผ๋ก ๋ฐ์ ์ฒ๋ฆฌ

8. Enum๊ณผ ์ฐ๊ณํ ๋ฐ์ดํฐ ๋งคํ

Enum ๊ฐ์ ๋ฐ๋ผ ํน์ ์ค์ ์ด๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ
์๋ฅผ ๋ค์ด, ํน์ ๊ตญ๊ฐ์ ๋ฐ๋ฅธ ํตํ ์ฝ๋ ์ง์

'ํ๋ก๊ทธ๋๋ฐ์ธ์ด > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ

์ค๋ฌด์์ Map์ ์ด๋์ ์ฐ์ผ๊น?
์ฐ๋ฆฌ๊ฐ ์๋ ์๋ฐ์ ๋งต(Map)์ ํค-๊ฐ ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค.
์ฌ๋์ โ์ด๋ฆ = ํ๊ธธ๋โ, โ์์ผ = ๋ช ์ ๋ฉฐ์น โ ๋ฑ์ผ๋ก ๊ตฌ๋ถํ ์ ์๋ฏ์ด
๋งต(Map) ์ ๋์ ๊ด๊ณ๋ฅผ ์ฝ๊ฒ ํํํ ์ ์๊ฒ ํด์ฃผ๋ ์๋ฃํ์ด๋ค.
๋งต์ ๋ค๋ฅธ ์ธ์ด์๋ ์๋ ์๋ฃํ์ผ๋ก, associative array ๋๋ hash๋ผ๊ณ ๋ ๋ถ๋ฆฐ๋ค.
๋งต์ ๋ฆฌ์คํธ๋ ๋ฐฐ์ด์ฒ๋ผ ์์ฐจ์ ์ผ๋ก(sequential) ์์๊ฐ์ ๊ตฌํ์ง ์๊ณ , ํค(key)๋ฅผ ์ด์ฉํด ๊ฐ(value)์ ์ป๋๋ค. ์ฐ๋ฆฌ๊ฐ baseball์ด๋ ๋จ์ด์ ๋ป์ ์ฐพ์ ๋ ์ฌ์ ์ 1์ชฝ๋ถํฐ ๋ชจ๋ ์ฝ์ง ์๊ณ baseball์ด๋ผ๋ ๋จ์ด๊ฐ ์๋ ๊ณณ์ ์ฐพ์ ํ์ธํ๋ ๊ฒ๊ณผ ๊ฐ๋ค. ๊ทธ๋์ Map์ ํ์ฉํ๋ฉด ๋๋์ ๋ฐ์ดํฐ์์๊ฒ์ ์๋๊ฐ ๋น ๋ฅด๊ณ ์ค๋ณต๊ฐ ๊ด๋ฆฌ๊ฐ ์ฝ๋ค.
๋งต ์๋ฃํ์๋ HashMap, LinkedHashMap, TreeMap ๋ฑ์ด ์๋ค.

๊ทธ๋ ๋ค๋ฉด ์ค์ ๋ก ์ด๋ค ๊ฒฝ์ฐ์ Map์ ์ฌ์ฉํ ๊น?
1. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ ์ฝ๋ ์ ์ฅ ๋ฐ ์กฐํ

๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ ๋ ์ฝ๋๋ ์ผ๋ฐ์ ์ผ๋ก ๊ณ ์ ID๋ก ์๋ณ๋จ
์ด ๊ฒฝ์ฐ Map์ ์ฌ์ฉํ์ฌ ID์ ํด๋น ๋ ์ฝ๋๋ฅผ ๋งคํ๊ฐ๋ฅ
ํน์ ID์ ๋ ์ฝ๋๋ฅผ ๋น ๋ฅด๊ฒ ์กฐํํ ์ ์์ด ์บ์ ์ญํ ์ ํจ.

2. ๋น๋ ์ ๊ณ์ฐ ๋ฐ ์ง๊ณ ์์

์๋ฅผ ๋ค์ด, ์ธ์คํ๊ทธ๋จ์ด๋ ํ์ด์ค๋ถ ๊ฐ์ ์์ ๋ฏธ๋์ด์ฑ์์
ํด์ํ๊ทธ ์ฌ์ฉ ๋น๋๋ฅผ ์ถ์ ํ ๋ Map์ด ์ ์ฉํจ.
๊ฐ ํด์ํ๊ทธ๋ฅผ ํค๋ก ์ฌ์ฉํ๊ณ , ๊ทธ ๋น๋๋ฅผ ๊ฐ์ผ๋ก ์ ์ฅํด ๋ฐ์ดํฐ๋ฅผ ์ง๊ณ

3. ์ค์ ํ์ผ ๋ฐ์ดํฐ ์ ์ฅ

์ ํ๋ฆฌ์ผ์ด์ ์ ์ค์ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ ๋, ์ค์ ํค์ ๊ฐ์ Map์ ์ ์ฅ
์๋ฅผ ๋ค์ด, ํ๊ฒฝ ์ค์ ์ ๋ก๋ํด ํค-๊ฐ ์์ผ๋ก ์ ์ฅํ๊ณ ํ์ํ ๋ ๋น ๋ฅด๊ฒ ์กฐํ
์๋ฐ์ JDBC URL, ๊ฒฝ๋ก, ํจ์ค์๋ ๋ฑ ์ ์ฅ

4. ์บ์ฑ (Caching)

์์ฃผ ์กฐํ๋๋ ๋ฐ์ดํฐ๋ฅผ ์บ์ฑํ ๋ Map์ด ์์ฃผ ์ฌ์ฉ
์๋ฅผ ๋ค์ด, ๋ก๊ทธ์ธํ ์ฌ์ฉ์์ ์ธ์ ์ ๋ณด๋ฅผ Map์ ์ ์ฅํ์ฌ ๋น ๋ฅด๊ฒ ์ ๊ทผ
์ด์ : DB์ ๋ฐ๋ณต์ ์ธ ์์ฒญ์ ๋ณด๋ด๋ ๋์ , ์บ์์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์.

5. ํค์ ๋ฐ๋ฅธ ๋ค๊ตญ์ด ์ง์

์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ค๊ตญ์ด ์ง์์ ๊ตฌํํ ๋, ๊ฐ ์ธ์ด๋ณ ๋ฉ์์ง๋ฅผ Map์ ์ ์ฅํด ๊ด๋ฆฌ
ํค๋ก ๋ฌธ์์ด์ ์๋ณ์(ID)๋ฅผ ์ฌ์ฉํ๊ณ , ๊ฐ์ผ๋ก ๋ฒ์ญ๋ ๋ฌธ๊ตฌ๋ฅผ ์ ์ฅ

6. ๊ทธ๋ํ ๋๋ ๋คํธ์ํฌ ๋ฐ์ดํฐ ๊ตฌ์กฐ ํํ

๊ทธ๋ํ๋ ๋คํธ์ํฌ ๊ตฌ์กฐ๋ฅผ ๊ตฌํํ ๋, ์ธ์ ๋ฆฌ์คํธ๋ฅผ Map์ผ๋ก ๊ตฌํ ๊ฐ๋ฅ
์๋ฅผ ๋ค์ด, ์์ ๋คํธ์ํฌ์์ ํ๋ก์ ๊ด๊ณ๋ฅผ ๋ํ๋ผ ๋ ์ฐ์

7. HTTP ์์ฒญ ํ๋ผ๋ฏธํฐ ์ฒ๋ฆฌ
์น ์ ํ๋ฆฌ์ผ์ด์ ์์ HTTP ์์ฒญ์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ฒ๋ฆฌํ ๋
Map์ ์ฌ์ฉํ์ฌ ํ๋ผ๋ฏธํฐ ํค์ ๊ฐ์ ๊ด๋ฆฌ
ํนํ Spring๊ณผ ๊ฐ์ ํ๋ ์์ํฌ์์ ์์ฒญ ํ๋ผ๋ฏธํฐ๋ฅผ Map์ผ๋ก ๋ฐ์ ์ฒ๋ฆฌ

8. Enum๊ณผ ์ฐ๊ณํ ๋ฐ์ดํฐ ๋งคํ

Enum ๊ฐ์ ๋ฐ๋ผ ํน์ ์ค์ ์ด๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ
์๋ฅผ ๋ค์ด, ํน์ ๊ตญ๊ฐ์ ๋ฐ๋ฅธ ํตํ ์ฝ๋ ์ง์
