인프런 Spring 강의 정리/실전! 스프링 데이터 JPA
✔ 실무에선 그렇게 많이 사용하진 않는 기능들 📌 Specifications(명세) 스프링 데이터 JPA는 JPA Criteria를 활용해서 이 개념을 사용할 수 있도록 지원 ⚡ 술어(predicate) 참 또는 거짓으로 평가 AND OR 같은 연산자로 조합해서 다양한 검색조건을 쉽게 생성(컴포지트 패턴) ex) 검색 조건 하나하나 스프링 데이터 JPA는 org.springframework.data.jpa.domain.Specification 클래스로 정의 ⚡ 명세 기능 사용 방법 public interface MemberRepository extends JpaRepository, MemberRepositoryCustom , JpaSpecificationExecutor{} JpaSpecificationE..
📌 스프링 데이터 JPA 구현체 분석 스프링 데이터 JPA가 제공하는 공통 인터페이스의 구현체 org.springframework.data.jpa.repository.support.SimpleJpaRepository 리스트 12.31 SimpleJpaRepository @Repository @Transactional(readOnly = true) public class SimpleJpaRepository ...{ @Transactional public S save(S entity) { if (entityInformation.isNew(entity)) { em.persist(entity); return entity; } else { return em.merge(entity); } } ... } @Repos..
📌 사용자 정의 리포지토리 구현 스프링 데이터 JPA 리포지토리는 인터페이스만 정의하고 구현체는 스프링이 자동 생성 스프링 데이터 JPA가 제공하는 인터페이스를 직접 구현하면 구현해야 하는 기능이 너무 많음 다양한 이유로 인터페이스의 메서드를 직접 구현하고 싶다면? JPA 직접 사용( EntityManager ) 스프링 JDBC Template 사용 MyBatis 사용 데이터베이스 커넥션 직접 사용 등등... Querydsl 사용 📌 사용자 정의 인터페이스 public interface MemberRepositoryCustom { List findMemberCustom(); } ⚡ 사용자 정의 인터페이스 구현 클래스 package study.datajpa.repository; import jakarta...
📌 쿼리 메소드 기능 3가지 메소드 이름으로 쿼리 생성 메소드 이름으로 JPA NamedQuery 호출 @Query 어노테이션을 사용해서 리파지토리 인터페이스에 쿼리 직접 정의 📌 메소드 이름으로 쿼리 생성 메소드 이름을 분석해서 JPQL 쿼리 실행 📌 순수 JPA 리포지토리 public List findByUsernameAndAgeGreaterThan(String username, int age){ return em.createQuery("select m from Member m where m.username = :username and m.age > :age") .setParameter("username", username) .setParameter("age", age) .getResultList()..