Search
Duplicate

[Spring 입문] 스프링 데이터 JPA & 통합 테스트

상태
스프링입문
담당자
속성 1
Spring
JAVA
JPA
MVC
jdbc
속성
11
스프링 데이터 JPA를 사용하면 리포지토리에 구현 클래스 없이 인터페이스 만으로 개발을 완료할 수 있다.
사용법을 알아보자.
1) SrpingDataJpaMemberRepostiory 인터페이스를 생성
1.
SrpingDataJpaMemberRepostiory 인터페이스에 extends JapRepository <Member, Long>, MemberRepostiory로 상속받는다.
2.
상속을 받게되면 Spring Jpa가 JpaRepostiory를 상속받는 클래스의 구현체를 자동으로 만들어주고, 만들어진 구현체를 토대로 스프링 빈에 자동으로 등록을 해준다.
3.
우리는 이제 SpringConfig에서 등록된 MemberRepository를 사용하면 된다.
package hello.hellospring.repository; import hello.hellospring.domain.Member; import org.springframework.data.jpa.repository.JpaRepository; import java.util.Optional; public interface SpringDataJapMemberRepository extends JpaRepository<Member, Long>, MemberRepository { @Override Optional<Member> findByName(String name); }
Plain Text
복사
- 여기서 부연설명을 하자고 하면 findByName은 따로 만든 이유는 데이터 베이스마다 조회할 때 엔티디 정보들이 전부 다르기 때문에 해당하는 값은 직접 지정해줘야 된다.  또한 추가적인 엔티티로 조회를 하기 위해서는 findByNameAndIDAnd... 이런 식으로 추가해 주면 된다.
2) SpringConfig DI 의존성 주입
자동으로 등록된 MemberRepository로 변경해주자.
package hello.hellospring; import hello.hellospring.repository.MemberRepository; import hello.hellospring.service.MemberService; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class SpringConfig { private final MemberRepository memberRepository; 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); }*/ }
Java
복사
결론
우리는 이제 쿼리 하나 없이 인터페이스를 구현한 것만으로 데이터 조회, 추가, 삭제 등 간단한 쿼리드를 작성할 수 있다. 그리고 복잡한 쿼리들은 jdbcTemplate이나, 마이 바티스, 등등 여러 가지 조합들을 통해서 조회하면 된다고 설명한다. 이후에 JPA를 들을 것이지만, 해당하는 기술을 접하지 못한 사람들이 이 코드를 봤을 때 동작을 어떻게 유추해야 될지.. 감이 안 올 것 같다.
이 글은 인프런의
제목 : 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
강사 : 김영한 님의 동영상을 참조해 만들었습니다.