실전 스프링 데이터 jpa

Specifications (명세)Specifications (명세) : DB 쿼리의 조건을 조립해 간단한 Spec으로 작성해서 날릴 수 있게 해준다.스프링 데이터 JPA는 JPA Criteria를 활용해서 기능을 지원해준다.술어(predicate)로 이루어져 있다.JPA Criteria 기술을 사용하기에 직관적이지 못하고 실무에서는 사용하지 않는 기술이다. 대신 QueryDsl을 사용할 것... Predicate (술어) : 참 또는 거짓으로 평가되며 AND, OR 연산자를 조합해서 다양한 검색 조건을 쉽게 생성한다.Query By ExampleQuery By Example : 도메인 객체를 검색 조건으로 사용하는 방식이다. //Query By Example 예제//Probe 생성Member membe..
스프링 데이터 JPA 분석@Repository : 컴포넌트 스캔 대상으로 지정할뿐만 아니라 JPA 예외를 스프링이 추상화한 예외로 변환시켜주기에 다른 기술(JDBC, MyBatis ...)을 사용하더라도 통합적으로 예외를 관리할 수 있게 해준다. 스프링 데이터 JPA의 각 메소드 구현체마다 @Transactional로 선언이 되어 있다.조회용 메소드는 readOnly 속성으로 되어 있다.데이터 변경 없이 단순 조회만 하기 위한 목적으로 flush를 생략함으로 약간의 성능 최적화가 이루어진다.서비스 계층에서 트랜잭션을 시작하지 않으면 레포지토리에서 트랜잭션이 시작되게 된다. save() : 새로운 엔티티라면 저장(persist), 새로운 엔티티가 아니면 병합(merge)를 한다.merge는 원하는 값만 바..
확장 기능사용자 정의 레포지토리스프링 데이터 JPA 레포지토리는 인터페이스만 정의하고 구현체는 스프링이 자동 생성해준다.이때 인터페이스를 직접 구현하려면 구현해야하는 기능이 너무 많다. 스프링 데이터 JPA 레포지토리의 인터페이스의 메소드를 직접 구현하고 싶을 때JPA 직접 사용(EntityManager)스프링 JDBC Template 사용MyBatis 사용데이터베이스 커넥션 직접 사용Querydsl 사용 사용자 정의 레포지토리 : 스프링 데이터 JPA가 제공하는 인터페이스를 직접 구현하는 방법 중 하나동적 쿼리 작성을 위해 QueryDsl을 사용할 때 주로 사용자 정의 레포지토리를 사용한다.//사용자 정의 레포지토리 예제public interface MemberRepositoryCustom { L..
쿼리 메소드 기능스프링 데이터 JPA에서 제공하는 쿼리 메소드 기능메소드 이름으로 쿼리 생성메소드 이름으로 JPA NamedQuery 호출@Query 어노테이션을 사용해서 레포지토리 인터페이스에 쿼리 직접 정의메소드 이름으로 쿼리 생성관례에 맞게 메소드 이름을 기반으로 쿼리를 생성한다.ex) findByNameAndAge => select ... ~ where name = :name and age = :age이 방식은 조건이 늘어날수록 메소드 이름이 길어진다는 단점이 존재한다.조회 - find...By, read...By, query...By, get...By로 메소드 명을 작성 가능...에는 식별하기 위한 내용이 포함되어도 된다. ex) findMemberBy~By는 SQL의 where절과 같은 역할이..
공통 인터페이스 기능Spring Data JPA는 JpaRepository를 상속받는 인터페이스가 있을 때 애플리케이션 실행 시점에 해당 인터페이스의 구현 클래스를 생성해준다.개발자가 직접 인터페이스에 대한 구현 클래스를 만들지 않아도 된다.Spring Jpa가 프록시 객체를 JpaRepository를 상속받은 인터페이스에 주입한다.메소드에 접근하는 시점에 실제 구현 클래스의 메소드를 호출하는 프록시 방식을 사용한다.JpaRepository를 상속받는 인터페이스에는 @Repository 어노테이션 생략 가능public interface XxxReposity extends JpaRepository {...}  스프링 데이터에 존재하는 Repository, CrudRepository, PagingAndSor..
h2boom
'실전 스프링 데이터 jpa' 태그의 글 목록