springDataJpa

๋ฒŒํฌ์„ฑ ์ˆ˜์ • ์ฟผ๋ฆฌ

@Modifying(clearAutomatically = true)
@Query("update Member m set m.age = m.age + 1 where m.age >= :age")
int bulkAgePlus(@Param("age") int age);

๋ฒŒํฌ์„ฑ ์ˆ˜์ • ์ฟผ๋ฆฌ๋Š” ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๋ฅผ ๋ฌด์‹œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ์— ์กฐํšŒ ์ฟผ๋ฆฌ๊ฐ€ ๋‚˜์˜ฌ ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•ด cleatAutomatically๋ฅผ true๋กœ ์„ธํŒ…

์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ

custom-repository

์ถœ์ฒ˜ : https://jojoldu.tistory.com/372

querydsl์„ ์‚ฌ์šฉํ•  ๋•Œ ์ปค์Šคํ…€ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์œ„์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋˜ํ•œ ์ˆœ์ˆ˜ jpa๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ฑฐ๋‚˜, jdbc template, mybatis ๊ฐ™์ด ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์œ„์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ปค์Šคํ…€ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

public interface MemberRepositoryCustom {
    List<Member> findMemberCustom();
}
@RequiredArgsConstructor
public class MemberRepositoryCustomImpl implements MemberRepositoryCustom {
    private final EntityManager em;
    @Override
    public List<Member> findMemberCustom() {
        return em.createQuery("select m from Member m").getResultList();
    }
}
public interface MemberRepository extends JpaRepository<Member, Long>, MemberRepositoryCustom {
}
List<Member> result = memberRepository.findMemberCustom();

interface์˜ ์ด๋ฆ„์€ ์ƒ๊ด€์—†์ง€๋งŒ ๊ตฌํ˜„์ฒด๋Š” ์ธํ„ฐํŽ˜์ด์Šค์ด๋ฆ„ + Impl์ด ๋˜์–ด์•ผ ํ•œ๋‹ค. ์œ„์™€ ๊ฐ™์ด ์ •์˜ํ–ˆ์„ ๋•Œ, ์›๋ž˜ MemberRepository+Impl ์ด๋ ‡๊ฒŒ ๊ตฌํ˜„์ฒด ์ด๋ฆ„์„ ์งœ์•ผ ํ•˜์ง€๋งŒ ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ 2.x๋ฒ„์ „๋ถ€ํ„ฐ๋Š” MemberRepositoryCustom+Impl ์ด ๋ฐฉ์‹๋„ ์ง€์›ํ•ด์ค€๋‹ค. ์ƒˆ๋กœ ๋งŒ๋“  ์ปค์Šคํ…€ ์ธํ„ฐํŽ˜์ด์Šค์— Impl์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋˜๋ฏ€๋กœ ๋” ์ง๊ด€์ ์ด๊ณ , ์—ฌ๋Ÿฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ถ„๋ฆฌํ•ด์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ์ด ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋งž๋‹ค.

์œ„์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ Spring Data Jpa์˜ ํŠน์„ฑ์„ ํ™œ์šฉํ•œ ๊ฒƒ์ด๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํ•ญ์ƒ ์œ„์ฒ˜๋Ÿผ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ๊ทธ๋ƒฅ ์ž„์˜์˜ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด๋„ ๋œ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด MemberQueryRepository๋ฅผ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์•„๋‹Œ ํด๋ž˜์Šค๋กœ ๋งŒ๋“ค๊ณ  ์Šคํ”„๋ง ๋นˆ(@Repository)์œผ๋กœ ๋“ฑ๋กํ•ด์„œ ๊ทธ๋ƒฅ ์ง์ ‘ ์‚ฌ์šฉํ•ด๋„ ๋œ๋‹ค. ๋ฌผ๋ก  ์ด ๊ฒฝ์šฐ ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA์™€๋Š” ์•„๋ฌด๋Ÿฐ ๊ด€๊ณ„ ์—†์ด ๋ณ„๋„๋กœ ๋™์ž‘ํ•œ๋‹ค.

Last updated