728x90
์ฌ์ฉ์ ์ ์ ๋ฆฌํฌ์งํ ๋ฆฌ ๊ตฌํ๋ฐฉ๋ฒ
์คํ๋ง ๋ฐ์ดํฐ JPA ๋ฆฌํฌ์งํ ๋ฆฌ๋ ์ธํฐํ์ด์ค๋ง ์ ์ํ๊ณ ๊ตฌํ์ฒด๋ ์คํ๋ง์ด ์๋์ผ๋ก ์์ฑํด์ค๋๋ค.
๊ทธ๋ฌ๋ ์คํ๋ง ๋ฐ์ดํฐ JPA๊ฐ ์ ๊ณตํด์ฃผ๋ ๊ธฐ๋ฅ ์ด์ธ์ ์ถ๊ฐ๋ก ํ์ํ ๊ธฐ๋ฅ์ด ์๋ ๊ฒฝ์ฐ, ์ด๋ฅผ ์์๋ฐ์ ์ง์ ๊ตฌํํ๋ ๊ฒ์ ๋๋ฌด ์ด๋ ต์ต๋๋ค.
์ด๋ฐ ๊ฒฝ์ฐ ์ฌ์ฉ์ ์ ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ์ฌ JPA ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์์๋ฐ์ ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
์ฌ์ฉ์ ์ ์ ์ธํฐํ์ด์ค
public interface MemberRepositoryCustom {
List<Member> findMemberCustom();
}
์ฌ์ฉ์ ์ ์ ์ธํฐํ์ด์ค ๊ตฌํ ํด๋์ค
@RequiredArgsConstructor
public class MemberRepositoryImpl implements MemberRepositoryCustom {
private final EntityManager em;
@Override
public List<Member> findMemberCustom() {
return em.createQuery("select m from Member m").getResultList();
}
}
์ด๋ ํด๋์ค ๋ช ์ ๋ค์ ๊ท์น์ ๋ง๊ฒ ์์ฑํด ์ฃผ์ด์ผ ํฉ๋๋ค.
(JPA๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์์๋ฐ์ ์ธํฐํ์ด์ค ์ด๋ฆ) + Impl
๋๋
(์ฌ์ฉ์ ์ ์ ์ธํฐํ์ด์ค ๋ช ) + Impl
์์ ๊ฒฝ์ฐ MemberRepositoryImpl ํน์ MemberRepositoryCustomImpl ๋ ์ค ํ๋๋ก ์์ฑํด ์ฃผ์ด์ผ ํฉ๋๋ค.
์ฌ์ฉ์ ์ ์ ์ธํฐํ์ด์ค ์์
public interface MemberRepository extends JpaRepository<Member, Long>, MemberRepositoryCustom {
}
์ฌ์ฉ
List<Member> result = memberRepository.findMemberCustom();
์ด๋ฆ์ Impl ๋์ ๋ค๋ฅธ ๊ฒ์ ๋ถ์ด๊ณ ์ถ๋ค๋ฉด?
@EnableJpaRepositories(backPackages = "๊ฒฝ๋ก", repositoryImplementationPostfix = "๋ฐ๊ฟ ์ด๋ฆ")
Reference
728x90
'๐๏ธ Spring > JPA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring Data JPA] JPA ํ์ฅ ๊ธฐ๋ฅ - ๋๋ฉ์ธ ํด๋์ค ์ปจ๋ฒํฐ (2) | 2022.07.28 |
---|---|
[Spring Data JPA] Auditing (0) | 2022.07.28 |
[Spring Data JPA] ๋ฝ(Lock) ์ฌ์ฉํ๊ธฐ (0) | 2022.07.28 |
[Spring Data JPA] ์ฝ๊ธฐ ์ ์ฉ ์ฟผ๋ฆฌ ๋ง๋ค๊ธฐ (JPA Hint) (0) | 2022.07.28 |
[Spring Data JPA] @EntityGraph (0) | 2022.07.28 |