CodeNexus
메뉴

JPA · Hibernate 정리 — 20편

연관관계 매핑, 영속성 컨텍스트, 성능 최적화.

학습 순서

난이도 순으로 읽으면 흐름이 이어집니다.

  1. [JPA] 연관관계 매핑 기초(다대일, 연관관계 주인)입문
  2. JPA - 연관관계 매핑(기초)(3)입문
  3. [JPA] Auditing 사용하기중급
  4. [JPA] Casecade 옵션중급
  5. [JPA] Custom Repository 만들기중급
  6. [JPA] 도메인 클래스 컨버터란?중급
  7. [JPA] null 처리중급
  8. [JPA] save메서드로 살펴보는 persist와 merge 개념중급
  9. [JPA] 엔티티 일부 데이터만 조회하는 Projection중급
  10. [JPA] proxy, fetch 전략중급
  11. [JPA] 쿼리메서드(Lookup 전략)중급
  12. [JPA]@Transactional를 통한 Optimization중급
  13. [JPA] 연관관계 매핑 (연관관계 편의 메서드)중급
  14. JPA - 영속성 관리(1)중급
  15. JPA - 프록시와 연관관계(5)중급
  16. JPA - 값 타입(6)중급
  17. [JPA] QueryDSL 설정방법심화
  18. [JPA] 엔티티 설계시 주의사항들심화
  19. JPA - 엔티티 매핑(2)심화
  20. JPA - 다양한 연관관계 매핑(4)심화

자주 묻는 질문

연관관계의 주인은 무엇이고 어떻게 정하나요?

외래 키를 실제로 관리하는 쪽이 연관관계의 주인입니다. 다대일 관계에서는 외래 키를 가진 다(N) 쪽이 주인이 되며, 반대편에는 mappedBy를 지정합니다. 주인이 아닌 쪽에서 값을 바꿔도 DB에 반영되지 않습니다.

persist와 merge는 어떻게 다른가요?

persist는 새 엔티티를 영속 상태로 만들고 그 인스턴스 자체가 관리됩니다. merge는 준영속·비영속 엔티티의 값을 복사한 새로운 영속 인스턴스를 반환하므로, 넘긴 객체가 아니라 반환된 객체를 써야 합니다.

지연 로딩과 즉시 로딩 중 무엇을 써야 하나요?

기본은 지연 로딩입니다. 즉시 로딩은 예상하지 못한 조인과 N+1 쿼리를 만들기 쉽습니다. 함께 조회해야 하는 구간은 fetch join이나 엔티티 그래프로 그 시점에만 명시적으로 해결합니다.

전체 글 20편

JPA · Hibernate

JPA - 값 타입(6)

본 글은, 자바 ORM 표준 JPA 프로그래밍(김영한님) 책을 요약 정리한 포스팅입니다.

레퍼런스중급약 4분#jpa#orm

JPA · Hibernate

JPA - 영속성 관리(1)

본 글은, 자바 ORM 표준 JPA 프로그래밍(김영한님) 책을 요약 정리한 포스팅입니다.

레퍼런스중급약 7분#jpa#orm#영속성

JPA · Hibernate

[JPA] Casecade 옵션

멤버(Member)와 사물함(Locker) 1:1 매핑 상황을 살펴보고, cascade 옵션이 어떤 상황에서 쓰이는지 알아보자. Member Locker 단방향 1:1 매핑에 대해서 살펴보자.

레퍼런스중급약 7분#jpa

JPA · Hibernate

[JPA] Custom Repository 만들기

기존의 JpaRepository를 상속받아서 기본적인 CRUD 기능을 사용할 수 있지만, 내가 1)커스텀하게 만들어서 사용하고 싶은 경우와 이미 JpaReposptry에서 제공하는 메서드를 새롭게 2)오버라이딩해서 사용할 수 있는 경우에 대해서 알아보

튜토리얼중급약 8분#jpa

JPA · Hibernate

[JPA] 도메인 클래스 컨버터란?

도메인 클래스 컨버터에 대해서 알아보자. 도메인 클래스 컨버터는 Spring Data Jpa를 사용하게 되면 Common 프로젝트에 있는 클래스 인데, 간단하게, id 엔티티 타입으로 변환 해주거나, 엔티티 id 로 변환해 주는 컨버터를 제공해준다.

레퍼런스중급약 4분#jpa

JPA · Hibernate

[JPA] null 처리

JPA에서 null처리 하는 방법에 대해서 알아 보자. JPA에서 단일 엔티티를 조회할 때, Optional객체를 리턴 받도록 설정되어 있다.

레퍼런스중급약 2분#jpa

JPA · Hibernate

[JPA] proxy, fetch 전략

프록시의 기본과, JPA에서 fetch 전략이 어떤 것들이 있는 지 알아보자. PA에서 식별자로 엔티티 하나를 조회할 때 EntityManager.find() 를 사용한다. 이 메서드는 영속성 컨텍스트에 엔티티가 없으면 데이터 베이스를 조회한다.

레퍼런스중급약 6분#jpa

JPA · Hibernate

[JPA] 쿼리메서드(Lookup 전략)

JPA에서 쿼리 메서드를 정의하는 방법에 대해서 알아보자. CREATE 메서드 이름을 분석해서 만듬 USE DECLARED QUERY 미리 정의해둔 쿼리를 찾아서 사용 CREATE IF NOT FOUND 기본 전략 미리 정의해둔 쿼리 찾아서 없으면 메

레퍼런스중급약 3분#jpa

JPA · Hibernate

[JPA] QueryDSL 설정방법

JPA에서 QueryDsl를 사용하는 방법에 대해서 알아보자. QueryDSL은 쿼리 domain specific language로 도메인에 맞게 쿼리를 프로그링 할 수 있다는 것이다.

튜토리얼심화약 11분#jpa#querydsl

JPA · Hibernate

[JPA]@Transactional를 통한 Optimization

Spring Data Jpa에서 제공하는 JpaRepository 의 구현체인 SimpleJpaReposity 의 @Transactional 을 어떻게 사용하는지 살펴보고, 실제 우리 서비스에서 어떻게 적용하면 좋을지에 대해서 생각해보자.

레퍼런스중급약 2분#jpa