전체 글132 [Spring Data JPA] 3. 쿼리 메소드 기능 쿼리 메서드 기능 메서드 이름으로 쿼리 생성 JPA NamedQuery @Query, 리포지토리 메서드에 쿼리 정의하기 @Query, 값, DTO 조회하기 파라미터 바인딩 반환 타입 순수 JPA 페이징과 정렬 스프링 데이터 JPA 페이징과 정렬 @EntityGraph JPA Hint & Lock 📌 메서드 이름으로 쿼리 생성 : 메서드 이름을 분석해서 JPQL 쿼리 실행 이름과 나이를 기준으로 회원을 조회하는 간단한 예제를 보자 순수 JPA 리포지토리 public List findByUsernameAndAgeGreaterThen(String username, int age) { return em.createQuery( "select m" + " from Member m" + " where m.userna.. 2023. 5. 19. [Java 8] 함수형 인터페이스와 람다 함수형 인터페이스와 람다 함수형 인터페이스와 람다표현식 소개 자바에서 제공하는 함수형 인터페이스 람다 표현식 메서드 레퍼런스 📌 함수형 인터페이스와 람다 표현식 소개 함수형 인터페이스(Functional Interface) 추상 메서드를 딱 하나만 가지고 있는 인터페이스 SAM (Single Abstract Method) 인터페이스 @FuncationInterface 애노테이션을 가지고 있는 인터페이스 @FunctionalInterface public interface RunSomething { void doIt(); static void printName() { System.out.println("name"); }; default void printAge() { System.out.println(30).. 2023. 5. 18. [Spring Data JPA] 2. 공통 인터페이스 기능 공통 인터페이스 기능 순수 JPA 리포지토리 만들기 공통 인터페이스 설정 공통 인터페이스 적용 공통 인터페이스 분석 📌 순수 JPA 기반 리포지토리 만들기 기본 CRUD 기능을 구현한다. Member 엔티티의 CRUD는 MemberJpaRepository 클래스, Team 엔티티의 CRUD는 TeamJpaRepository 클래스에 구현. 1. Create(저장) Member 저장 public Member save(Member member) { em.persist(member); return member; } Team 저장 public Team save(Team team){ em.persist(team); return team; } 2. Read(조회) Member 조회 public List findAl.. 2023. 5. 17. [Spring Data JPA] 1. 예제 도메인 모델 예제 도메인 모델 1. 예제 도메인 모델과 동작확인 📌 예제 도메인 모델과 동작확인 Member와 Team 엔티티를 구현하고 연관관계를 테스트한다. 엔티티 클래스 Member 입장에서 다 수의 회원은 하나의 팀에 소속될 수 있다. → 다(N) 대 일(1) 관계 Team 입장에서 하나의 팀에는 다 수의 회원이 소속될 수 있다. → 일(1) 대 다(N) 관계 ERD 외래키(FK)는 Member가 갖는다. Member 엔티티 @Entity @Getter @Setter @NoArgsConstructor(access = AccessLevel.PROTECTED) @ToString(exclude = "team") public class Member { @Id @GeneratedValue @Column(name = ".. 2023. 5. 17. [Spring Boot + JPA] API 개발과 성능 최적화 - 4. OSIV와 성능 최적화 📌 OSIV와 성능 최적화 Open Session In View: 하이버네이트 Open EntityManager In View: JPA (관례상 OSIV라 한다.) OSIV ON spring.jpa.open-in-view : true (OSVI 활성화 :: 기본값) 서버 구동 시 다음과 같은 warn로그가 남는 것을 확인할 수 있고 이 기본값을 뿌리면서 애플리케이션 시작 시점에 warn 로그를 남기는 것은 이유가 있다. WARN 27128 --- [ restartedMain] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be perf.. 2023. 5. 17. [Spring Boot + JPA] API 개발과 성능 최적화 - 3. 컬렉션 조회 최적화 주문내역에서 추가로 주문한 상품 정보를 추가로 조회하자. Order 기준으로 컬렉션인 OrderItem와 Item 이 필요하다. 앞의 예제에서는 toOne(OneToOne, ManyToOne) 관계만 있었다. 이번에는 컬렉션인 일대다 관계 (OneToMany)를 조회하고, 최적화하는 방법을 알아보자. 📌 주문 조회 V1 : 엔티티 직접 노출 @RestController @RequiredArgsConstructor public class OrderApiController { private final OrderRepository orderRepository; @GetMapping("/api/v1/orders") public List orderV1() { List all = orderRepository.fin.. 2023. 5. 16. 이전 1 ··· 13 14 15 16 17 18 19 ··· 22 다음