시그마 삽질==six 시그마

스프링 데이터 JPA 본문

프로그래밍/JPA

스프링 데이터 JPA

Ethan Matthew Hunt 2020. 4. 10. 21:47
우아한 형제들의 김영한 팀장님 책  '자바 ORM 표준 JPA 프로그래밍'을

구입하시길 강력 추천드립니다.

책 구입을 원하시는분은 요기를 클릭하시면 됩니다.

저자 직강 인프런 강의도 있습니다 궁금하신분은 요기를 클릭

하단의 내용은 제가 예전에 읽었던 내용을 요약 정리한 것입니다.

 

 

 

1. 정의

 

JPA를 편리하게 사용하도록 지원하는 프로젝트임

 

데이터 접근 계층을 개발시 구현 클래스 없이 인터페이스만 작성해도 개발완료 가능

 

우리의 리파지토리 찾아서 자동으로 구현 클래스를 동적으로 생성하고 Bean으로 등록시킴

 

2. 인터페이스 계층

 

Interface Repository(스프링 데이터)

<-  interface CrudeRepository(스프링 데이터)

<- interface PagingAndSortingRepository(스프링 데이터)

<-- interface JpaRepository(스프링데이터 JPA )

 

 

3. 쿼리메소드

메소드 이름만으로 쿼리를 생성하는 기능

인터페이스에 메소드만 선언하면 메소드 이름으로 적절한 JPQL 쿼리를 생성해서 실행

 

1. 메소드 이름으로 쿼리생성  메소드 이름 분석해서 JPQL생성해서 실행함. ex)findByStartDateBetween ...

2. 메소드 이름으로 JPA NamedQuery호출

3. @Query 어노테이션을 사용해서 리포지토리 인터페이스에 쿼리 직접 정의

벌크성쿼리에는 @Modifying 붙여주면됨

 

4. 기타

 

조회결과 없으면 컬렉션은 빈컬렉션 반환/ 단건은 null반환  단건기대하고 반환/타입지정했는데 결과2건이상 조회시 예외발생

쿼리시 Lock 걸려면 어노테이션 사용 @Lock(LockModeType.xxx)

명세기능 사용가능

사용자 정의 리파지토리 구현 가능(필요 메소드만 구현 가능)

페이징 정보 둘이상이면 @Qualifier 어노테이션으로 구분 가능

save()메소드: 식별자가 객체일때 null, 자바 기본타입일때 숫자0값이면 새로운 엔티티로 판단해서 저장, 이미있는 엔티티면 병합한다

QueryDslPredicateExecutor 보다 QueryDslRepositorySupport를 사용하자

 

 

 

 

 

 

 

'프로그래밍 > JPA' 카테고리의 다른 글

트랜잭션과 락 ,2차 캐시  (0) 2020.04.11
JPA- 영속성 관리  (0) 2020.04.10
JPA -객체 지향 쿼리언어  (0) 2020.04.09
JPA -값 타입  (0) 2020.04.09
JPA -프록시와 연관관계 관리  (0) 2020.04.09
Comments