MapleStory Cookie With Halo

๐Ÿƒ Spring/๐Ÿƒ Spring Boot

[SpringBoot][Gradle]์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA. ์„ค์ •๋ถ€ํ„ฐ ์‚ฌ์šฉ๊นŒ์ง€ ์ž…๋ฌธํŽธ.

๋‰ด์ด NUEY 2025. 1. 10. 15:53
๋ฐ˜์‘ํ˜•

 

Spring Data JPA

 

 

  • JPA๋ฅผ ๋„์™€์ฃผ๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.

  • ๋ณดํ†ต ๋ฐ˜๋ณต ๊ฐœ๋ฐœํ•˜๋Š” CRUD ๊ธฐ๋Šฅ๋ถ€ํ„ฐ ํŽ˜์ด์ง•๊นŒ์ง€ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

โ— JPA๋ฅผ ๊ณต๋ถ€ํ•œ ๋‹ค์Œ Spring Data JPA๋ฅผ ๊ณต๋ถ€ํ•ด์•ผ ํ•œ๋‹ค.

 

 


 

์‚ฌ์šฉ๋ฒ•

 

  1. Repository
    • src-main-java-hello-hellospring-repositoryํŒจํ‚ค์ง€์— ์ธํ„ฐํŽ˜์ด์Šค SpringDataJpaMemberRepository๋ฅผ ๋งŒ๋“ ๋‹ค.
    • SpringDataJpaMemberRepository

      •  JpaRepository ๋ฅผ ํ™•์žฅextendsํ•œ๋‹ค.
        โ†’ JpaRepository๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ๋นˆ์œผ๋กœ ๋งŒ๋“ค์–ด ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์— ์˜ฌ๋ฆฐ๋‹ค.

      • ์ œ๋„ค๋ฆญ ํƒ€์ž…์œผ๋กœ <์—”ํ‹ฐํ‹ฐT, ๊ธฐ๋ณธํ‚ค ํƒ€์ž…ID > ์„ค์ •.

      • ์ƒ์œ„ ์ธํ„ฐํŽ˜์ด์Šค ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์ถ”๊ฐ€๋กœ ํ™•์žฅํ•œ๋‹ค.

    • ์ด ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ตฌํ˜„ ํด๋ž˜์Šค๊ฐ€ ์—†์–ด๋„ ์•„๋ž˜ 2.config๋งŒ ์„ค์ •ํ•ด๋„ ์ด๋ ‡๊ฒŒ ์ฝ”๋“œ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
    • jpa API doc์— ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋“ค์€ ๋ชจ๋‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
    • ์œ„ findByName() ๋ฉ”์„œ๋“œ๋Š” doc์— ์—†๋Š”๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

      • JPQL์—๋Š” ๊ทœ์น™์ด ์žˆ์–ด์„œ ๋ฉ”์„œ๋“œ๋ช…์„ findBy + Name๋ผ๊ณ  ์ ์œผ๋ฉด 

        โ†’ select m from Member m where m.name = ?

        ๊ณผ ๊ฐ™์ด ๋ณ€ํ™˜ํ•ด ์‹คํ–‰ํ•œ๋‹ค.
        ์•„์ฃผ ๋ณต์žกํ•œ ์ฟผ๋ฆฌ ๋ง๊ณ  ๋Œ€๋ถ€๋ถ„์˜ ์ฝ”๋“œ๋Š” ์ด๋ ‡๊ฒŒ ์ธํ„ฐํŽ˜์ด์Šค๋งŒ์œผ๋กœ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•œ๋‹ค.
      • findByNamdOrId ์™€ ๊ฐ™์ด 'or' ๋‚˜ 'and'๋ฅผ ์ด์šฉํ•ด์„œ ์กฐํ•ฉ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.
    • ์ „์ฒด์ฝ”๋“œ
      ๋”๋ณด๊ธฐ
      package hello.hellospring.repository;
      
      import java.util.List;
      import java.util.Optional;
      import org.springframework.data.jpa.repository.JpaRepository;
      import hello.hellospring.domain.Member  ;
      
      @SuppressWarnings("unchecked")
      public interface SpringDataJpaMemberRepository extends JpaRepository<Member, Long>, MemberRepository {
      
          @Override
          public Member save(Member member);
      
          @Override
          Optional<Member> findById(Long id);
      
          @Override
          Optional<Member> findByName(String name);
      
          @Override
          List<Member> findAll();
      }
  2. config

    • ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑ์ž ์˜์กด์„ฑ ์ฃผ์ž…DI์œผ๋กœ ๋ฐ›์•„์„œ ์„œ๋น„์Šค์—์„œ ์‚ฌ์šฉํ•œ๋‹ค.

    • ์ „์ฒด์ฝ”๋“œ
      ๋”๋ณด๊ธฐ
      package hello.hellospring;
      
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.context.annotation.Bean;
      import org.springframework.context.annotation.Configuration;
      
      import hello.hellospring.repository.MemberRepository;
      import hello.hellospring.service.MemberService;
      
      @Configuration
      public class SpringConfig {
      
          private final MemberRepository memberRepository;
      
          @Autowired
          public SpringConfig(MemberRepository memberRepository) {
              this.memberRepository = memberRepository;
          }
      
          @Bean
          public MemberService memberService() {
              return new MemberService(memberRepository);
          }
      }

 


 

๐Ÿ’ก ์‹ค๋ฌด์—์„œ๋Š” JPA์™€ ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๋ณต์žกํ•œ ๋™์  ์ฟผ๋ฆฌ๋Š” Querydsl ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ด ์กฐํ•ฉ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ํž˜๋“  ๊ฒฝ์šฐ ๋„ค์ดํ‹ฐ๋ธŒ ์ฟผ๋ฆฌ(SQL ์ฟผ๋ฆฌ)๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ Jdbc Template์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

 

โ€ป ์ฐธ์กฐ : https://www.inflearn.com/roadmaps/373

๋ฐ˜์‘ํ˜•