์ธ๊ณ์ ๋๋ถ๋ถ์ ๊ธฐ์ ๋ฌธํ์ด ์์ด๋ก ์์ฑ๋๋ค๋ ๊ฒ์ ๋น๋ฐ์ด ์๋๋๋ค. ๊ทธ๋ฆฌ๊ณ Java ๊ฐ๋ฐ๋ ์์ธ๋ ์๋๋๋ค. ์๋ฃ์ ์๋น ๋ถ๋ถ์ด ๋ฌ์์์ด๋ก ์ ํ ์ ๊ณต๋์ง ์๊ฑฐ๋ Google ๋ฒ์ญ์ ์ฌ์ฉํ์ฌ ๋ฐฐ์ฐ๋ ๊ฒ์ด ๋ ๋์ ๋ฐฉ์์ผ๋ก ๋ฒ์ญ๋์์ต๋๋ค. ์ด ์ฃผ์ ์ ๊ดํ ๊ฐ์ฅ ์ ๋ช
ํ ์ฑ
์ธ "Java Persistence API with Hibernate"๊ฐ ์ฝ 6๊ฐ์ ์ ์ ๋ฌ์์์ด๋ก ๋ฒ์ญ๋์๋ค๋ ์ฌ์ค์ ๋ฌ์์์ด๋ฅผ ์ฌ์ฉํ๋ ์ ์ฒด Java ์ปค๋ฎค๋ํฐ์ ๋์ฑ ๊ธฐ์ ๊ฒ์
๋๋ค.
Java ๊ฐ๋ฐ์๊ฐ ๋๊ณ ์ถ๋ค๋ฉด ์ธ์ ๊ฐ๋
Hibernate ์ฌ์ฉ๋ฒ์ ๋ฐฐ์์ผ ํ ๊ฒ์
๋๋ค . ๋ฌผ๋ก ๋ชจ๋ ๊ท์น์๋ ์์ธ๊ฐ ์์ผ๋ฉฐ ๋ชจ๋ ํน์ ํ๋ก์ ํธ ๋ฑ์ ๋ฐ๋ผ ๋ค๋ฆ
๋๋ค. ๊ทธ๋ฌ๋ ์ฅ๊ธฐ์ ์ผ๋ก ๊ฒฝ๋ ฅ์ ์ดํด๋ณด๋ฉด ์ค์ ์
๋ฌด์์ ํ์คํ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ํ๊ฒ ๋ ๊ฒ์
๋๋ค. ๊ณผ์ฅํ์ง ์๊ณ ๊ธฐ์ฌ์ ์ ์๋ ์ฑ
์ ๊ธฐ๋ณธ์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค. ์ด ๊ธฐ์ ์ ๋ํด ์์ฑ๋ ๋ชจ๋ ๋ด์ฉ ์ค์์ Hibernate์ ๋ํ ์ฃผ์ ๊ฐ์ด๋์
๋๋ค. ์ด๋ ๋งค์ฐ ์ฝ๊ฒ ์ค๋ช
๋ฉ๋๋ค. ๊ทธ ์ ์ ์ค์๋ Hibernate ํ๋ก์ ํธ์ ์ฐฝ๋ฆฝ์์ธ Gavin King๊ณผ Hibarnate ๊ฐ๋ฐ ํ์ ๊ตฌ์ฑ์์ธ Christian Bauer๊ฐ ์๊ธฐ ๋๋ฌธ์
๋๋ค. ๊ฐ์ธ์ ์ผ๋ก ์ด๊ฒ์ ์ผ์ข
์ ํ์ง ๋ณด์ฆ์ธ ์ญํ ์ ์ฆ์ ์ํํ์ต๋๋ค. ์ ์์๋ ์๋์ง๋ง ๊ธฐ์ ์ ๋ค์ง๋ ๋ฐ ๋ฅ์ํ ์ฌ๋ :) ๋ฐ๋ฉด์ ์ข์ ์ ๋ฌธ๊ฐ ๋๋ ์ฌ์ง์ด๋ ์ ์์๊ฐ ํญ์ ๊ทธ๋ฐ ๊ฒ์ ์๋๋๋ค. ๊ธฐ์ ์ ์ดํดํ๊ธฐ ์ฌ์ด ๊ต์ก ๋์๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ๋ญ๋ผ๊ณ ๋งํ๋ ๊ฐ์ธ์ ๊ธฐ์ ๊ณผ ๊ฐ๋ฅด์น๋ ๋ฅ๋ ฅ์ ์๋ก ๊ฑฐ์ ์๊ด ๊ด๊ณ๊ฐ ์์ต๋๋ค. Knuth์ ์ ์ค์ ์ธ "ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ "์ด๋ ์ ์์ Bjarne Stroustrup์ "C++ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด"๊ฐ ๊ทธ ์์
๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ์์ ์ต๊ณ ์์ค์ ์ง์์ ๋ถ์ ํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ๋ค๋ฉด ๊ทธ๋ค์ ์ฑ
์ ๊ฐ๋ณ๊ฒ ๋งํ๋ฉด ์ฝ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค. ๋คํ์ค๋ฝ๊ฒ๋ Hibernate์ ์ ์์์ ์ด ์ฑ
์ ์ ์๋ค์ ์ด๋ณด ํ๋ก๊ทธ๋๋จธ์ ๊ด์ ์์ ๊ฝค ์ดํดํ ์ ์๋ ์ ํ์ ๋ง๋ค์์ต๋๋ค.
์ด ์ฑ
์ ๋๊ตฌ๋ฅผ ์ํ ์ฑ
์
๋๊น? ๋๋ถ๋ถ์ ์ ์ฌํ ์ฑ
๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ด๋ก์๋ Hibernate๋ฅผ ์ฒ์๋ถํฐ ๋ฐฐ์ฐ๋ ์ฌ๋๋ค์ ํฌํจํ์ฌ "๋ชจ๋ ์ฌ๋์ ์ํ" ์ฑ
์ด๋ผ๊ณ ๋์ ์์ต๋๋ค. ์ฌ์ค ๊ด๋ จ ๊ธฐ์ ์ ํํ๋ก ์ฌ์ ์ค๋น๋ฅผ ํด๋๋ ๊ฒ์ด ๋ ์ข์ต๋๋ค. ๋ค์์ ์ด ์ฑ
์ ์ฝ์ ๋ ์ฌ๋ฌ๋ถ์ ์ถ์ ํจ์ฌ ๋ ์ฝ๊ฒ ๋ง๋ค์ด ์ค ๊ฒ๋ค์ ๋ชฉ๋ก์
๋๋ค.
-
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๋ฌด์์ธ์ง ๋ชจ๋ฅด๋ฉด ํ
์ด๋ธ์ ์์ฑํ ์๋ ์๊ณ ๊ฐ๋จํ SELECT ์ฟผ๋ฆฌ ๋ฑ์ ์์ฑํ ์๋ ์์ต๋๋ค. - ์ด๊ฒ๋ถํฐ ์์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ทธ๊ฑด ๊ทธ๋ ๊ณ , ์ด๊ฒ์ JavaRush ์ธํด์ญ์ ์ฐธ์ฌํ๋ ค๋ ์ฌ๋๋ค์๊ฒ ์ ์ฉํ ๊ฒ์
๋๋ค. SQL๋ก ์์ํ๊ณ ๋์ค์ ์ต๋ ์ ์ ๋ชจ๋๋ก ์ ํํ์ธ์. ๋คํ์ค๋ฝ๊ฒ๋ ํ๋ฅญํ Head-First๊ฐ SQL๋ก ์์ฑ๋์์ต๋๋ค (์ ์ทจํฅ์ผ๋ก๋ ์ ์ฒด ์๋ฆฌ์ฆ ์ค ์ต๊ณ ์ HeadFirst ์ค ํ๋์
๋๋ค).
-
JDBC . ์ด ๊ธฐ์ ์ ์๋ก์ด ๊ฒ๊ณผ๋ ๊ฑฐ๋ฆฌ๊ฐ ๋ฉ์ง๋ง ๊ฒฝํ ๋ง์ ๊ฐ๋ฐ์๋ค์ ์ฌ์ ํ โโHibernate๋ณด๋ค ์ด ๊ธฐ์ ์ ์ ํธํฉ๋๋ค.
-
๊ทธ๋ฐ ๋ค์ ORM์ด ๋ฌด์์ธ์ง, ์ ํ์ํ์ง ์ ๋ํด (์ ์ด๋ ํ๋ฉด์ ์ผ๋ก๋) ์ฝ์ด ๋ณด๋ ๊ฒ์ด ์ข์ ๊ฒ์
๋๋ค . ๊ฒฐ๊ตญ, Hibernate๋ ๋ฌด์๋ณด๋ค๋ ORM, ์ฆ Java ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ ์ฝ๋๋ก (๋๋ ๊ทธ ๋ฐ๋๋ก) ๋ฐ๊พธ๋ ๊ฒ์
๋๋ค.
์๋ฅผ ๋ค์ด User ํด๋์ค, Auto ํด๋์ค๊ฐ ์๊ณ ๊ฐ User์๋ ์๋์ฐจ ๋ชฉ๋ก<Auto> ์๋์ฐจ ๋ชฉ๋ก์ด ์์ต๋๋ค.
์ฌ์ฉ์์ ์ปดํจํฐ ๊ฐ์ ์ฐ๊ฒฐ์ด ์ ์ง๋๋๋ก ์ด ๋ชจ๋ ๊ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ธฐ๋กํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์
๋๊น? ๊ฒฐ๊ตญ, ์ฌ์ฉ์๋ ํ ๋ช
์ด์ง๋ง ๊ทธ๋ ๋ง์ ์ปดํจํฐ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค./ ์ฌ์ฉ์๋ฅผ ์ง์ ์ญ์ ํ ๊ฒฝ์ฐ(์ฆ, ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ "๊ณ ์" ์ปดํจํฐ๋ฅผ ์ ์ฅํ๋ ๊ฒ์ ๊ธ์งํ๋ ๊ฒฝ์ฐ) ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ชจ๋ ์ฌ์ฉ์ ์ปดํจํฐ๋ฅผ ์๋์ผ๋ก ์ญ์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ฌด์์
๋๊น? ์ต๋ ์ ์ ๋ชจ๋๋ ๋ฐฉ๋ฒ์ ์๊ณ ์์ต๋๋ค :)
-
๋ํ Java์๋ ์์ฒด ORM ๋ชจ๋ธ ๊ตฌํ( Java Persistence API ๋๋ ๊ฐ๋จํ JPA)์ด ์์ต๋๋ค. ์ฑ
์์๋ ๋ค๋ฃจ์ง๋ง ๋จผ์ ํ์ด๋ณด๋ ๊ฒ์ด ์ข์ต๋๋ค. ํด๋น ์ฃผ์ ์ ๋ํ ์๋ง์ ๋ฌธํ์ ์ฝ์ ํ์๋ ์์ต๋๋ค. POJO, ์ํฐํฐ๊ฐ ๋ฌด์์ธ์ง, ์ํฐํฐ์ ์ ์ฉ๋๋ ์๊ตฌ ์ฌํญ์ด ๋ฌด์์ธ์ง ์๋ค๋ฉด ๊ฝค ์ข์ ๊ฒ์
๋๋ค.
-
XML ํ์ ์ ์ต์ํ์ง ์๋ค๋ฉด ์ด ์ฑ
์ ์ฝ๊ธฐ ์ ์ ๋จผ์ ์ต์ํด์ง ์๊ฐ์
๋๋ค. ๋งค์ฐ ์์ฃผ, Hibernate(Spring๋ ํฌํจ) ๊ตฌ์ฑ ํ์ผ์ XML ํ์์ผ๋ก ์์ฑ๋๋ฉฐ, ๊ทธ๊ฒ์ด ๋น์ ์ ๊ฒ๋๊ฒ ํ๋ค๋ฉด ์ฑ
์ ์ฝ๊ธฐ๊ฐ ๋ ์ด๋ ค์ธ ๊ฒ์
๋๋ค.
-
๋์์ธ ํจํด(์ ์ด๋ JavaRush ์์
์ ํตํด)์ ์ต์ํ๋ค๋ฉด DAO ํจํด ๊ณผ ๊ทธ๊ฒ์ด ํ์ํ ์ด์ ๋ฅผ ์ฝ์ ์ ์์ต๋๋ค. DAO๋ Hibernate๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํํ๊ธฐ๊ฐ ๋งค์ฐ ์ฝ์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ์ธํด์ญ ์ฐธ๊ฐ์๋ ํ
์คํธ ์์
์ ์์ฑํ ๋(๊ทธ๋ฆฌ๊ณ ํ๋ก์ ํธ ์์ฒด์์๋) "daos"๋ฅผ ์์ฑํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ค์ ์์
์์๋ ์ด๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์ผ์์ ์ธ ์์
์ด๋ฏ๋ก ๋ถํ์ํ์ง ์์ต๋๋ค.
์์ ๋ชจ๋ ์ฌํญ์ ๋ํ ์ฌ์ ์ง์์ ์ฐ๊ตฌ๋ฅผ ํฌ๊ฒ ๋จ์ํ ํ ๊ฒ์
๋๋ค (๊ทธ๋ฆฌ๊ณ ์ง์ฅ์์ ์ด๊ฒ์ ํ์ ํญ๋ชฉ์
๋๋ค). ๊ฒฐ๋ก ์ ์ผ๋ก, ์ฑ
์ ์ฅ์ ๊ณผ ๋จ์ ์ ๋ํด ์กฐ๊ธ ์ค๋ช
ํ๊ฒ ์ต๋๋ค.
์ฅ์ :
-
์์ด ๋ฒ์ญ์ด ๊ฝค ์ข์ต๋๋ค . ์ด ์ ์ ์ค์์ฑ์ ๋ํด์๋ ๋ฐ๋ก ๊ธ์ ์ธ ๊ฐ์น๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ฌผ๋ก ์๋ณธ์ ์ธ์ ๋ ๋ ์ข์ ๊ฒ์ด๊ณ , ์์ด๋ฅผ ์ถฉ๋ถํ ์์ค์ผ๋ก ์๊ณ ์๋ค๋ฉด ์ฝ๋ ๊ฒ์ด ๋ ์ข์ต๋๋ค. ๊ทธ๋ฌ๋ ์์ง ์์ด๊ฐ ์ต์ํ์ง ์์ง๋ง ์ด๋ก ์ธํด ๊ณต๋ถ๋ฅผ ์ค๋จํ๊ณ ์ถ์ง ์์ ์ฌ๋๋ค์๊ฒ๋ ์ด๊ฒ์ด ํ๋ฅญํ ์ ํ์
๋๋ค.
-
๋งค์ฐ ๊ด๋ฒ์ํ ์ฃผ์ ๋ฅผ ๋ค๋ฃจ๊ณ ์์ต๋๋ค . ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฑฐ์ ๋ชจ๋ "๋ด๋ถ"๊ฐ ์ค๋ช
๋ฉ๋๋ค. ์์ฃผ ์์ธํ๊ฒ ๋ญ๊ฐ์ ๋ํด, ์ข ๋ ์๊ปด์ ๋ญ๊ฐ์ ๋ํด. ๊ทธ๋ฌ๋ ์ ๋ฐ์ ์ผ๋ก ์ ์ฉ ๋ฒ์๋ ๊ฝค ๊ด์ฐฎ์ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค.
-
๊ฐ๋จํ๊ณ ์ดํดํ๊ธฐ ์ฌ์ด ์ธ์ด .
๋ง์ด๋์ค ์ค์์ ์๋ง ๊ฐ์กฐํ ์ ์์ต๋๋ค. ์ ์๊ฐ์๋ ๋ ๊ฐ๋จํ๊ณ ๊ฐ๊ฒฐํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋
์์๊ฒ ์ฃผ์ด์ง ์๋ก์ด ์ ๋ณด์ ์์ ๊ณ ๋ คํ๋ฉด ์ด๋ณด์๊ฐ ๋ชจ๋ ๊ฒ์ ์ปดํ์ผํ๊ณ ์๋์ํค๋ ๊ฒ์กฐ์ฐจ ์ด๋ ค์ธ ์ ์์ต๋๋ค. ์ฝ๋์์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ์ดํดํ๋ ๊ฒ์ ๋งํ ๊ฒ๋ ์์ต๋๋ค. ๊ฐ์ธ์ ์ผ๋ก GitHub์์ ์์ ๋ฅผ ๋ณต์ ํ์ง ๋ง๊ณ ์ง์ ์
๋ ฅํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋น์ ์ ๊ทธ๊ฒ์ ์ดํดํ๊ฒ ๋ ๊ฒ์ด๊ณ , ๋น์ ์ ์ดํด๋ ํจ์ฌ ๋ ์ข์์ง ๊ฒ์
๋๋ค. ๋ ๋์ ๋ฐฉ๋ฒ์ ๋ค์ ์ฅ์ ์ฝ์ ํ ์ง์ ๋ช ๊ฐ์ง ์์
์ ์๊ฐํด ๋ด๊ณ ๊ตฌํํ๋ ๊ฒ์
๋๋ค. ์์
์ด ๋งค์ฐ ๊ฐ๋จํ๋๋ผ๋ ์ด๋ ํจ์ฌ ๋ ์์ฐ์ ์
๋๋ค.
์ฑ
์ ์ฌ๋ ๊ฒ์ด ๊ฐ์น๊ฐ ์๋์? ๋ถ๋ช
ํ๊ฒ ์์
๋๋ค. ๊ฒ๋ค๊ฐ ๋ฐํ ๋ถ์๋ 200๋ถ๋ฐ์ ๋์ง ์์ต๋๋ค. :) ์ด ์ฑ
์ ์๋ฃ๋ฅผ ๋ฐํ์ผ๋ก ์ ๋ Habrahabr์ ๋ํ ์ฒซ ๋ฒ์งธ
๊ธฐ์ฌ๋ฅผ ์์ฃผ ์ฝ๊ฒ ์ผ์ต๋๋ค . ์ ์๊ฐ์๋ JavaRush ๊ด๋ฆฌํ์ด ์ด๋ฅผ ๊ฒฝ์ ์ํ ๋ชฉ๋ก์ ์ถ๊ฐํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค :) ๊ด์ฌ์ ๊ฐ์ ธ์ฃผ์
์ ๊ฐ์ฌ๋๋ฆฌ๋ฉฐ, ํ์
์ ํ์ด์ด ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค!
GO TO FULL VERSION