๐ฅบ ์๋ก
๋๋ฉ์ธ ๊ณ์ธต์ Repository์ ์์์ฑ ๊ณ์ธต์ Repository๋ฅผ ๋ถ๋ฆฌํ์ฌ ์ฌ์ฉํด๋ณด๋ ค ์๋ํ๋ ๊ณผ์ ์์, findBy*** ์์ ์ด๋ฆ์ ๋ฉ์๋์, @Query๋ฅผ ์ฌ์ฉํ์ฌ ์ง์ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๋ ๋ฑ์ ๋ฉ์๋๋ ์ด๋ค ์์ผ๋ก ์ฌ์ฉํด์ผ ํ๋์ง์ ๋ํด์ ์์๋ณด์๊ณ , ์ด๋ ค์ด ๋ด์ฉ์ ์๋๊ธฐ๋ ํ๊ณ ์๊ฐํ๋ ๋ฐฉ์ ๊ทธ๋๋ ์ ์ฉ๋๊ธด ํ์ง๋ง, ๊ทธ๋๋ ํน์ ๋์ ๋์๋ ๋ถ์ด ์์๊น๋ด ์์ฑํ๋ ค ํฉ๋๋ค.
๐ง ๋๋ฉ์ธ ๊ณ์ธต์ Repository์, ์์์ฑ ๊ณ์ธต์ Repository ๋ถ๋ฆฌํ๊ธฐ
์ ๋ ์ ์ฌ์ง์ฒ๋ผ ๋๋ฉ์ธ ๊ณ์ธต๊ณผ ์ธํ๋ผ์คํธ๋ญ์ณ ๊ณ์ธต์ ๋๋์๊ณ , JpaArticleRepository๋ ArticleRepository๋ฅผ ์์๋ฐ์ต๋๋ค.
ArticleRepository๋ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ์์ต๋๋ค.
์ด๋ฅผ ์์๋ฐ์ JpaArticleRepository๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํด๋น ์ฝ๋๊ฐ ์ ๋๋ก ์๋ํ ๊ฒ ๊ฐ๊ธฐ๋ ํ๊ณ , ์๋ํ์ง ์์ ๊ฒ ๊ฐ๊ธฐ๋ ํฉ๋๋ค.
save(), findById(). findAllByTitle()๊ฐ ์ ๋๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์์ ๊ฐ์ด ๊ฐ๋จํ๊ฒ ํ ์คํธ๋ฅผ ์์ฑํ๊ณ ๋๋ ค๋ณด๋ฉด ํ ์คํธ์ ์ฑ๊ณตํ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
์ด๊ฒ์ ํตํด save()์ ๊ฐ์ด JpaRepository์ ์ด๋ฏธ ์ ์๋์ด ์๊ฑฐ๋, JpaRepository๊ฐ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ์ ์๋ findBy~~~, existsBy~~~ ๋ฑ์ ๋ฐ๋ก๋ฐ๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ์ ์ ์์์ต๋๋ค.
๐ง @Query ์ฌ์ฉํ๊ธฐ
@Query์ฒ๋ผ ๊ฐ๋ฐ์๊ฐ ์ง์ jpql์ ์์ฑํด ์ฃผ์ด์ผ ํ๋ ๊ฒฝ์ฐ์๋ ์ด๋ป๊ฒ ํ ๊น์?
์ด๊ฒ๋ ๋๊ฒ ๊ฐ๋จํ๊ฒ ๊ตฌํ์ด ๊ฐ๋ฅํ๋ฐ, ์์๋ฅผ ํตํด ์์๋ณด๊ฒ ์ต๋๋ค.
์์ ๊ฐ์ด ์ง์ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ํ์๊ฐ ์๋ sampleQuery() ๋ฉ์๋๋ฅผ ์ ์ธํ์์ต๋๋ค.
์ด๋ฅผ ์์๋ฐ์ JpaRepository์์๋ ํด๋น ๋ฉ์๋๋ฅผ Override ํ์ฌ @Query๋ฅผ ํตํด ์์ฑํด ์ฃผ์๋ฉด ์ฌ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
์ ๋ง ์ ๋๋์ง ํ์ธ์ ์ํด ์๋์ ๊ฐ์ด ํ ์คํธ์ฝ๋๋ฅผ ์์ฑํ์๊ณ ,
์ฑ๊ณตํ๋ ๊ฒ์ ํ์ธํ์ต๋๋ค.
@EntityGraph์ ๊ฐ์ ๋ค๋ฅธ ๊ธฐ๋ฅ๋ค๋ ์ง์ ์ฌ์ฉํด๋ณด์๋ฉด ์์ ๋น์ทํ๊ฒ ๋ฉ์๋๋ฅผ Override ํ์ฌ JpaRepository์์ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋์ผํ๊ฒ ์ฌ์ฉํ๋ฉด ๋ชจ๋ ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.