Spring/spring_old

07./ Spring Web MVC-DB연계-Spring DATA JPA

slow333 2023. 1. 14. 15:22

인터페이스 만으로 DB를 연계함

인터페이스 만으로 기본적인 CRUD를 제공함

findByName(), findByEmail() 처럼 메서드 이름 만으로 조회 기능 제공

페이징 기능 자동 제공 

  •  실무에서는 jpa와 spring data jpa를 기본으로 사용

       ☞ 복잡한 쿼리는 Querydsl 이라는 라이브러리를 사용

           → Duerydsl을 사용하면 쿼리도 자바코드로 안전하게 작성 가능하고 동적 쿼리도 편리하게 작성

        이 조합으로 해결하기 어려운 쿼리는 JPA가 제공하는 네이티브 쿼리를 사용하거나, jdbcTemplate를 사용

 

@Configuration 설정

@Configuration
public class SpringConfig {

//  private final EntityManager em;
//  @Autowired
//  public SpringConfig(EntityManager em) {
//    this.em = em;
//  }
private final MemberRepository memberRepository;

  @Autowired
  public SpringConfig(MemberRepository memberRepository) {
    this.memberRepository = memberRepository;
  }

  @Bean
  public MemberService memberService(){
    return new MemberService(memberRepository);
  }

//  @Bean
//  public MemberRepository memberRepository(){
////    return new MemoryMemberRepository();
////    return new JdbcMemberRepository(dataSource);
////    return new JdbcTemplateMemberRepository(dataSource);
//    return new JpaMemberRepository(em);
//  }
}

interface SpringDataJpaMemberRepository 생성

public interface SpringDataJpaMemberRepository extends JpaRepository<Member, Long>, MemberRepository {

  // JPQL => slect m from Member m where m.name = ?
  // 여기서 name은 findBy***의 뒤에 이름을 보고 Data Jpa에서 추론해서 적용함
  // findByNameAndId(String name, Long, id)
  @Override
  Optional<Member> findByName(String name);
}

 

'Spring > spring_old' 카테고리의 다른 글

09./ Spring Web MVC-Aop  (0) 2023.01.15
02./ Spring folder 구조  (0) 2023.01.14
07./ Spring Web MVC-DB연계-JPA  (0) 2023.01.13
07./ Spring Web MVC-DB연계-jdbc template  (0) 2023.01.13
07./ Spring Web MVC-DB연계  (0) 2023.01.12