Java/Spring Boot
JPA, 스프링 데이터 JPA
amungstudy
2023. 9. 18. 13:22
jpa는 모든 데이터 변경이 transaction 내에서 실행되어야 함.
service 클래스에 @Transactional 부착.
Spring Data JPA는 JpaRepository를 상속하는 인터페이스의 구현체를 만들어서 등록해줌.
public interface SpringDataJpaMemberRepository extends JpaRepository<Member,Long>, MemberRepository {
@Override
Optional<Member> findByName(String name);
}
@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 제공 기능
- 인터페이스를 통한 기본적인 CRUD
- findByName() , findByEmail() 처럼 메서드 이름 만으로 조회 기능 제공
- 페이징 기능 자동 제공
참고: 실무에서는 JPA와 스프링 데이터 JPA를 기본으로 사용하고, 복잡한 동적 쿼리는 Querydsl이라는
라이브러리를 사용하면 된다. Querydsl을 사용하면 쿼리도 자바 코드로 안전하게 작성할 수 있고, 동적
쿼리도 편리하게 작성할 수 있다.