ํจํค์ง๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ์์ ํฌ๊ฒ ๋ ๊ฐ์ง๋ก ๋๋ ์ ์๋ค. ๊ณ์ธตํ๊ณผ ๋๋ฉ์ธํ์ด๋ค. ์ด ๋ ๊ฐ์ง ๊ตฌ์ฑ ๋ฐฉ์์ ๊ฐ์์ ์ฅ๋จ์ ์ด ์กด์ฌํ๋ค. ๊ฐ์์ ์ฅ๋จ์ ์ ํ ๋๋ก ํ๋ก์ ํธ์ ๊ฐ์ฅ ์ ํฉํ๋ค๊ณ ํ๋จ๋๋ ๋๋ฉ์ธ ๊ตฌ์ฑ ๋ฐฉ์์ ์ ํํ๋ ๊ฒ์ด ์ข๋ค๊ณ ํ๋ค. ์ ๋์ ์ธ ๊ธฐ์ค์ ์๋ ๊ฒ ๊ฐ๋ค.
์ผ๋จ ์์คํ ์ ๊ท๋ชจ์ ๋ฐ๋ผ ํ๋ก์ ํธ๊ฐ ๋๋ฌด ์์์ ๋๋๋ ๊ฒ์ด ๋ฌด์๋ฏธํ๋ค๊ณ ํ๋จ์ด ๋๋ค๋ฉด ํจํค์ง ํ๋์ ๋ค ๋ชฐ์๋ฃ๋ ๊ฒ์ด ์ ๋ฆฌํ๋ค. ์๊ตฌ์ฌํญ์ด ๋๋ฉด์ ํ๋ก์ ํธ์ ๊ท๋ชจ๊ฐ ์ปค์ง๋ฉด ์ปจํธ๋กค๋ฌ, DTO, Entity, ์๋น์ค ๋ฑ์ ํจํค์ง๋ก ๋๋๋ ๊ฒ์ด ์ข๋ค. ์ด๋ ๊ฒ ๋๋๋ ๋ฐฉ์์ด ๊ณ์ธตํ์ด๋ค. ํ๋ก์ ํธ๊ฐ ๋์ฑ ์ปค์ง๊ฒ ๋๋ฉด ํจํค์ง๋ณ ํ์ผ์ ์๊ฐ ๋์ด๋๊ฒ ๋๋ค. ๊ทธ๋ ๊ฒ ๋๋ฉด ํ๋ก์ ํธ๋ฅผ ์ ์ง๋ณด์ํ๊ธฐ ํ๋ค์ด์ง๋ค. ์ด๋ด ๋๋ ๋๋ฉ์ธ๋ณ๋ก ํจํค์ง๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒ์ด ์กฐ๊ธ ๋ ์ ๋ฆฌํด์ง๋ค. ๋๋ฉ์ธ๋ณ๋ก ๊ตฌ์ฑํ๊ฒ ๋๋ฉด ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๋ ํจํค์ง ํ๋๋ฅผ ์ถ๊ฐํ๊ณ ๊ทธ๊ณณ์์ ์์ ํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ํ์ฅ์ฑ์ด ์๋ค. ์ ๋ต์ ์๋ค๊ณ ๋ ํ์ง๋ง ํ์ฅ์ฑ์ ๊ณ ๋ คํ ๋ ๋๋ฉ์ธํ์ผ๋ก ๊ตฌ์ฑํ๋ ๊ฒ์ด ์ข์ ๊ฒ ๊ฐ๋ค.
๋ด๊ฐ ์ง๊ธ ๋ถ์ํ๊ณ ์๋ Pet Clinic์ ๋๋ฉ์ธํ์ผ๋ก ํจํค์ง๋ฅผ ๋๋๊ณ ์๋ค. ๋ช ๋ ์ ์ ์์ฑ๋๋ Pet Clinic์ ๊ณ์ธตํ์ด์๋๋ฐ ๋ฆฌํจํค์ง๋ฅผ ์งํํ๋ฉฐ ๋๋ฉ์ธํ์ผ๋ก ๋ฐ๋ ๊ฒ ๊ฐ๋ค. ๋ด๊ฐ ์ฒ์ ๋ดค๋ Pet Clinic์ ๊ณ์ธตํ์ด์๋๋ฐ ์ด๋ค ๋ธ๋ก๊ทธ์์ ๋๋ฉ์ธํ์ด๋ผ๊ณ ์๊ฐํด์ ๋ค์ ์ฐพ์๋ดค๋๋ ๊ฐ์ฅ ์ต๊ทผ์ ์ ๋ก๋๋ ์ฝ๋๋ ๋๋ฉ์ธํ์ผ๋ก ๋ฐ๋์๋ค..
์ด๊ฒ Pet Clinic์ src/main/java ํ์์ ํจํค์ง ๊ตฌ์ฑ์ด๋ค. org/springframework/samples/petclinic ํจํค์ง ์๋์ ๋ค ๊ฐ์ ํจํค์ง๊ฐ ์๋ค.
์ฌ์ค ๊ฐ์ฅ ์ฒ์ ๊ถ๊ธํ๋ ๊ฒ 'ํจํค์ง ๊ตฌ์ฑ์ ์ด๋ป๊ฒ ํ๋ ๊ฒ ์ข์๊น?'์๋ค. ์ฒ์ ์น ํ๋ก๊ทธ๋๋ฐ์ ์ ํ์ ๋๋ ๊ณ์ธตํ์ผ๋ก ๊ตฌ์ฑํ๋ ๊ฒ์ผ๋ก ๋ฐฐ์ ์๋๋ฐ ๊ท๋ชจ๊ฐ ์ปค์ง๋ฉด ๋ณต์กํด ๋ณด์ผ ๊ฒ ๊ฐ์๋ค. ์ฅ๋จ์ ์ ์ฐพ์๋ณด๋ค ๋ณด๋ ๊ฒฐ๋ก ์ ํ๋ก์ ํธ ๊ท๋ชจ์ ๋ฐ๋ผ ๋ค๋ฅด๋ค๋ ๊ฒ์ด์๋ค. ๊ท๋ชจ๊ฐ ์ ๋ง ์์ง ์์ ์ด์ ํ์ฅ์ฑ์ ๊ณ ๋ คํด ๋๋ฉ์ธํ์ผ๋ก ๊ตฌ์ฑํ๋ ๊ฒ ์ข์ ๊ฒ ๊ฐ๋ค. ์ด ๋ถ๋ถ์ ํ๋ก์ ํธ๋ฅผ ๋ง์ด ๊ฒฝํํ๋ค ๋ณด๋ฉด ๋๋ฆ์ ๋ ธํ์ฐ๊ฐ ์๊ธฐ์ง ์์๊น?
๊ทธ๋ฆฌ๊ณ ์ฌ๋ด์ผ๋ก Pet Clinic ๋ถ์ํ๊ธฐ ์ ํผ์ ์ฝ์งํ๋ค ์๊ฒ ๋ ๊ฑด๋ฐ Spring Boot์์๋ ๋ฉ์ธ ํด๋์ค๊ฐ ๋ค๋ฅธ ํจํค์ง๋ค๊ณผ ๊ฐ๊ฑฐ๋ ์์์ ์์ด์ผ @Entity, @Repository ๋ฑ์ ์ด๋ ธํ ์ด์ ์ ์ฝ์ ์ ์๋ค๋ ๊ฒ์ด์๋ค. ์ด ํ๋ก์ ํธ๋ฅผ ๋ถ์ํ๊ธฐ ์ ์๋ ๊ด๋ จ ์ง์์ด ํ๋๋ ์๋ ์ํ์ฌ์ ๋ค๋ฅธ ํจํค์ง๋ค์ ๋๋๋ฏ ๋ฉ์ธ ํจํค์ง๋ฅผ ๋ง๋ค์ด ๊ทธ ํ์์ ๋ฉ์ธ ํด๋์ค๋ฅผ ์์น์์ผฐ๋๋ฐ ์ํฐํฐ๋ ๋ฆฌํฌ์งํ ๋ฆฌ ์ด๋ ธํ ์ด์ ์ ์ฝ์ง ๋ชปํ๋ค. ์ด์ฐ์ด์ฐ ์ฐพ๋ค๊ฐ @EnableJpaRepositories(basePackages = {"๋ฆฌํฌ์งํ ๋ฆฌ ํจํค์ง ๋ช "})๊ณผ @EntityScan(basePackages = {"์ํฐํฐ ํจํค์ง ๋ช "})์ ์ถ๊ฐํด์ ํด๊ฒฐํ๊ธด ํ๋๋ฐ Pet Clinic ํจํค์ง ๊ตฌ์กฐ๋ฅผ ๋ณด๋ ๊ทธ๋ฅ ๋ค๋ฅธ ํจํค์ง๋ค๊ณผ ๊ฐ์ ์์น์ ๋ฉ์ธ ํด๋์ค๋ฅผ ๋ฃ์ผ๋ฉด ๋๋ค. ๊ทธ๊ฑธ ๋ชฐ๋ผ์ '์ ์ ๋๋ ๊ฑฐ์ง..?'๋ฅผ ๋ฐ๋ณตํ๋ค.. ํญํ ๊ตฌ๊ธ๋ง์ ์๊ฐ๋ค... ๊ทธ๋ฐ๋ฐ ์๊ณ ๋๋๊น ๋น์ฐํ๋ค. ๋ฉ์ธ ํด๋์ค์ ์์๋ก๋ ์ ์ฌ๋ผ๊ฐ๋ ๊ฒ ๋น์ฐํ๋ฐ.. ๊ฐ์ ์์น์์ ํ์๋ก๋ง ์ค์บํ๋ ๊ฒ ๋น์ฐํ๋ฐ.... ๋ฐ๋ณด ๊ฐ์ ์ง์ด์์ง๋ง ๊ทธ๋๋ ํ๋ ๋ฐฐ์ ๋ค๋ ๋ฐ ์์๋ฅผ ๋๋ ๊ฒ์ด ์ ์ ๊ฑด๊ฐ์ ์ด๋กญ๊ฒ ์ง. ๊ทธ๋์ ๊ธฐ์ด์ง์์ ์์์ผ๊ฒ ๋ค๊ณ ์๊ฐํ์๋ค. ๊ธฐ์ด๋ฅผ ์๋ฉด ์ด๋ฐ ๋ฐ๋ณด ๊ฐ์ ์ค์๋ ํ์ง ์๊ฒ ์ง...
ํจํค์ง ๊ตฌ์กฐ ๊ด๋ จ ์ค๋ช
-
https://www.inflearn.com/questions/16046/
https://cheese10yun.github.io/spring-guide-directory/