JPA/Spring Data Jpa

Projections엔티티 대신에 DTO를 편리하게 조회할 때 사용전체 엔티티가 아니라 만약 회원 이름만 딱 조회하고 싶으면? public interface UsernameOnly { String getUsername();}조회할 엔티티의 필드를 getter 형식으로 지정하면 해당 필드만 선택해서 조회(Projection)public interface MemberRepository ... { List findProjectionByUsername(@Param("username") String username);}메서드 이름은 자유, 반환 타입으로 인지@Testpublic void projection() { Team teamA = new Team("teamA"); em.persist(team..
스프링 데이터 JPA가 실제 어떻게 동작하는지 코드 레벨로 들어가서 살펴보자.스프링 데이터 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)..
사용자 정의 리포지토리 구현스프링 데이터 JPA 리포지토리는 인터페이스만 정의하고 구현체는 스프링이 자동 생성한다.그렇게 되면 스프링 데이터 JPA가 제공하는 인터페이스를 직접 구현해야 하는 경우 구현해야 하는 기능이 너무 많다그래서 다양한 스타일로 인터페이스의 메서드를 직접 구현하고 싶은 경우가 있다.JPA 직접 사용( `EntityManager` )스프링 JDBC Template 사용MyBatis 사용데이터베이스 커넥션 직접 사용 등등...Querydsl 사용사용자 정의 인터페이스public interface MemberRepositoryCustom { List findMemberCustom();}사용자 정의 인터페이스 구현 클래스@RequiredArgsConstructorpublic class..
스프링 데이터 JPA가 제공하는 마법 같은 기능 쿼리 메소드 기능 3가지메소드 이름으로 쿼리 생성메소드 이름으로 JPA NamedQuery 호출@Query 어노테이션을 사용해서 리파지토리 인터페이스에 쿼리 직접 정의메소드 이름으로 쿼리 생성메소드 이름을 분석해서 JPQL 쿼리 실행 예를들어 이름과 나이를 기준으로 회원을 조회하려면?순수 JPA 리포지토리@Repository@RequiredArgsConstructorpublic class MemberJpaRepository { private final EntityManager em; ... public List findByUsernameAndAgeGreaterThan(String username, int age) { return em..
an_jjin
'JPA/Spring Data Jpa' 카테고리의 글 목록