📌 Spring Data Jpa 어떤 종류의 데이터 저장소 (Repository)라도 기본적인 동작이 필요하다. Spring Data Jpa는 제네릭한 인터페이스를 제공하여 공통된 연산을 동적으로 제공한다. > 사용 예시 (인터페이스 클래스에서) > 번외 : @
📌 쿼리 메서드 기능 ✔ 메서드 이름으로 쿼리를 자동 생성해준다. 쿼리 메소드는 Repository 인터페이스에 간단한 네이밍 룰을 이용하여 메소드를 작성하면 원하는 쿼리를 실행할 수 있다. > - 사용 예시 ( 엔티티의 이름은 생략이 가능합니다. ) 📍 참
엔티티를 조회하는것이 아닌 값, DTO로 조회하는 방법을 소개 > 📍 단순 값 조회 > 📍 DTO로 조회 (new 오퍼레이션으로 패키지명을 다 적어줘야됨)
스프링 데이터 Jpa의 유연한 반환 타입 > - 컬렉션, 단건 조회 등 📌 List 컬렉션은 절대 null을 반환하지 않는다. (매칭이 안되더라도) 단건 조회는 매칭이 안되면, null값을 반환한다.
순수 JPA 페이징과 정렬
벌크성 수정 쿼리 : DB에 업데이트 쿼리를 날려야되는경우예시 (조건을 만들어 마지막에 executeUpdate()로 값을 반환해준다.)예시(@Modifying 어노테이션을 추가해줘야 DB에 업데이트가 된다. 꼭추가해줘야된다)해결법 : 벌크연산을 하고 영속성 컨텍스트를
- 예시 (스프링 데이터 JPA에서도 JPQL을 작성하여 fetch조인을 할수있다) 📌 스프링 데이터 JPA에서 JPQL을 작성하여 fetch조인을 하지않고, > - 예시 (@EntityGraph 라는 어노테이션을 제공한다, JPQL을 작성하지 않아도된다)
스프링 데이터 JPA 리포지토리는 인터페이스만 정의하고 구현체는 스프링이 자동 생성스프링 데이터 JPA가 제공하는 인터페이스를 직접 구현하면 구현해야 하는 기능이 너무 많다는 문제점이 있다.다양한 이유로 인터페이스의 메서드를 직접 구현하고 싶다면?JPA 직접 사용 (E
엔티티를 생성, 변경 할때 변경한 사람과 시간을 추적하고 싶으면? 등록일 (기본으로 설정한다) 수정일 (기본으로 설정한다) 등록자 수정자 📌 순수 JPA 사용
스프링 데이터가 제공하는 페이징과 정렬 기능을 스프링 MVC에서 사용할수 있다.예시( yml, properties에서 글로벌로 size와 sort 방식을 지정할수있지만, 따로 지정할수도있다.) ✔ 따로 지정하는것이 우선순위가 더 높다.예시(page에서 map을 지원하여
JpaRepository --> SimpleJpaRepositorysave() 메서드새로운 엔티티면 저장 (persist())새로운 엔티티가 아니면 병합 (merge()) "DB에서 한번 SELECT를 한다" (치명적 단점)📍 @Transactional : 트랜잭션
실무에서는 사용하기 애매한 기술들이다하지만 알고있으면 좋다.스프링 데이터 JPA는 JPA Criteria를 활용해서 (실무에서 사용 X) 이 개념을 사용할수 있도록 지원한다.술어참 또는 거짓으로 평가AND OR 같은 연산자로 조합해서 다양한 검색조건을 쉽게 생성 (컴포
Query By Example