반응형

Intro
이전 시간에 JPA를 사용해서 DB와 연결해봤다.
JDBC에서 JPA로 대체하는것 만으로도 코드가 엄청 많이 줄었는데 여기서 더 줄이는 방법이 있다고 한다.
바로 Spring Data JPA를 사용하는 것이다.
Spring Data JPA 써보기
우선 SpringDataJpaMembeRepository 인터페이스를 만들어주고, JpaRepository랑 이전에 만든 MemberRepository를 상속시켜주자.
SpringDataJpaMemberRepository.java
package com.devjaewoo.hellospring.repository;
import com.devjaewoo.hellospring.domain.Member;
import org.springframework.data.jpa.repository.JpaRepository;
public interface SpringDataJpaMemberRepository extends JpaRepository<Member, Long>, MemberRepository {
}
이제 여기에 findByName 함수를 오버라이딩 해주자.
package com.devjaewoo.hellospring.repository;
import com.devjaewoo.hellospring.domain.Member;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.Optional;
public interface SpringDataJpaMemberRepository extends JpaRepository<Member, Long>, MemberRepository {
@Override
Optional<Member> findByName(String name);
}
이러면 끝이라고 한다.

Spring Data JPA에서 save, findById, findAll 함수들은 기본적으로 지원하고, 지원하지 않는 함수는 형식에 맞춰주기만 하면 알아서 다 구현해준다고 한다. (너무 자동이라 실용성이 있을지 잘 모르겠다.)
예를 들어 아래처럼 함수를 선언하면 name이 받은 문자열로 시작하는 데이터만 반환해준다.
Optional<Member> findByNameStartsWith(String name);
심지어 MemberRepository를 상속받아서 Bean으로 자동 등록까지 해준다고 한다.
SpringConfig를 다시 수정하자.
SpringConfig.java
package com.devjaewoo.hellospring;
import com.devjaewoo.hellospring.repository.JdbcTemplateMemberRepository;
import com.devjaewoo.hellospring.repository.JpaMemberRepository;
import com.devjaewoo.hellospring.repository.MemberRepository;
import com.devjaewoo.hellospring.repository.MemoryMemberRepository;
import com.devjaewoo.hellospring.service.MemberService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.persistence.EntityManager;
import javax.sql.DataSource;
@Configuration
public class SpringConfig {
private final MemberRepository memberRepository;
@Autowired
public SpringConfig(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
@Bean
public MemberService memberService() {
return new MemberService(memberRepository);
}
}
테스트도 바로 통과했다.

Spring Data JPA와 함께라면 DB 설계만 해도 구현까지 뚝딱일것 같다.
출처
반응형
'Study > Spring Boot' 카테고리의 다른 글
[Spring Boot] Spring Data Redis 사용해보기 (0) | 2022.09.04 |
---|---|
[Spring Boot] AOP 적용해보기 (0) | 2022.02.15 |
[Spring Boot] JPA로 JdbcTemplate 대체하기 (0) | 2022.02.15 |
[Spring Boot] 스프링 통합 테스트 케이스 만들기 (0) | 2022.02.15 |
[Spring Boot] JdbcTemplate로 MemoryRepository 대체하기 (0) | 2022.02.14 |