SpringBoot ๋ฉํฐ๋ชจ๋ ํ๋ก์ ํธ - ๋ชจ๋ ๊ฐ ์์กด๊ด๊ณ ์ค์ ์ค๋ฅ ํด๊ฒฐ
๐จ ์ค๋ฅ ๋ฐ์ ์ง์
API๋ชจ๋์์ Domain๋ชจ๋์ implementationํ์ฌ ์ฌ์ฉํ๋ ์ํฉ์์
API๋ชจ๋์์ Domain๋ชจ๋์ ์์กด์ฑ์ ์ถ๊ฐ๋ JPA ์ฌ์ฉ ์, ์๋์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
Cannot access 'org.springframework.data.jpa.repository.JpaRepository' which is a supertype of 'com.th.plu.domain.domain.member.repository.MemberRepository'. Check your module classpath for missing or conflicting dependencies
ํ์ฌ ์์กด์ฑ์ ๋ค์๊ณผ ๊ฐ์ด ์ฐ๊ฒฐ๋ ์ํ์ด๋ค.
API๋ชจ๋ -> Domain ๋ชจ๋ implementation,
Domain ๋ชจ๋ -> JPA implementation
์ ๋๋ก ์์กด์ฑ์ด ์ฐ๊ฒฐ๋์๋๋ฐ ์ ์ด๋ฌํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์๊น์ ๋ํด ์ฐพ์๋ณด๋ ์ค ๋ฌธ์ ์ ๋ฐ์ ์์ธ์ ์ฐพ์๋ด๊ฒ ๋์๋ค.
์ฐ์ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ implementation ํค์๋์ api ํค์๋์ ๋ํด ์๊ณ ์์ด์ผ ํ๋ค.
implementation ํค์๋
implementation์ ํตํด ์์ ๊ฐ์ด ์์กด์ฑ์ ์ถ๊ฐํ๋ฉด JPA ๋ชจ๋์ ์์ ์ด ๋ฐ์ํ์ ๋
์ง์ ์ฐธ์กฐํ๊ณ ์๋ ๋ชจ๋์ธ Domain๋ชจ๋๋ง rebuild(recomplie) ํ๋ฉด ๋๋ค๋ ํน์ง์ด ์๋ค.
api ํค์๋
ํ์ง๋ง api๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ์ง์ , ๊ฐ์ ์์กดํ๊ณ ์๋ ๋ชจ๋๊น์ง rebuild(recomplie)์ด ๋์ด์ผ ํ๋ค.
์ฆ, JPA ๋ชจ๋์ ์์ ํ๋๋ฐ Domain ๋ชจ๋ ๋ฟ๋ง ์๋๋ผ API ๋ชจ๋๊น์ง rebuild(recomplie) ๋์ด์ผ ํ๋ค๋ ๊ฒ์ด๋ค.
์ด๋ฌํ ํน์ง์ ์ํด implementation ํค์๋๋ฅผ ํตํด ์ ์ฐจํธ์ ๊ฐ์ด ์์กด์ฑ์ ์ถ๊ฐํ ๊ฒฝ์ฐ์๋, JPA์ ๋ณ๊ฒฝ์ด ๋ฐ์ํด๋ ์ด๋ฅผ ์ฌ์ฉํ๋ API๋ชจ๋์ rebuild๊ฐ ๋์ง ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ์ฐ๋ คํ์ฌ
API๋ชจ๋์์ Domain๋ชจ๋์ด implementationํ๊ณ ์๋ JPA์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ ๊ฒ์ด๋ค.
โ ๋ฌธ์ ํด๊ฒฐ
๋ฌธ์ ํด๊ฒฐ์ ์ํด์๋ Domain ๋ชจ๋์์ JPA ์์กด ์ค์ ์ implementation์ด ์๋ apiํค์๋๋ก ๋ณ๊ฒฝํด์ฃผ์ด์ผ ํ๋ค.
API๋ชจ๋์์ Domain ๋ชจ๋ implementation,
Domain ๋ชจ๋์์ JPA api
๊ฒฐ๋ก ์ ์ผ๋ก ํ์ฌ ์์กด์ฑ์ ๋ค์๊ณผ ๊ฐ์ด ์์ ๋ ์ํ์ด๋ค.
์ด๋ ๊ฒ Domain ๋ชจ๋์์ api ํค์๋๋ฅผ ํตํด JPA ์์กด์ฑ์ ์ถ๊ฐํด์ฃผ์๋๋ API ๋ชจ๋์์ JPA ์ฌ์ฉ์ ๋ํ ์ค๋ฅ๊ฐ ์ฌ๋ผ์ ธ
์ฐธ์กฐํ ์ ์๊ฒ ๋์๋ค.