JPA
-
JPA 연관 관계의 주인과 소유 측: 개념 및 예제JPA 2024. 5. 4. 18:26
JPA 연관 관계에 대한 학습을 하다보면 관계의 주인이라는 표현이 나온다.이에 대해 자세히 알아보자.예제 코드// In Customer class:@OneToMany(mappedBy="customer")private Set orders;// In Order class:@ManyToOneprivate Customer customer;The owner of the relationship (관계의 주인)"관계의 주인(The owner of the relationship)"은 엔티티 클래스 자체가 아니라, 관계를 관리하는 필드 또는 프로퍼티를 의미한다.JPA의 레퍼런스 어디에서도 엔티티 클래스에 owner라는 표현을 쓰지 않는다.예제 코드에서 Order 클래스의 customer 필드가 관계의 주인이다.이는 외래..
-
JPA 연관 관계 어노테이션의 속성 분석JPA 2024. 5. 4. 16:04
JPA의 연관 관계를 정의하는 어노테이션에는 @ManyToOne, @OneToMany, @OneToOne, @ManyToMany가 있다.그리고 각 어노테이션에는 여러 가지 속성들로 관계를 더 명확히 정의하는 방법을 제공한다.이 글에서는 @ManyToOne, @OneToMany, @OneToOne, @ManyToMany의 각 속성의 목적과 사용 방법에 대해 알아보자.targetEntity목적: 연관 대상 엔티티 클래스를 지정한다.기본 값*ToOne: 관계를 저장하는 필드 또는 프로퍼티의 타입. 즉, 어노테이션이 붙은 필드 또는 프로퍼티의 타입.*ToMany: collection의 parameterized type. 단, collection이 Java generic을 사용하여 정의되었을 때에만 적용된다. 그..
-
JPA : 영속성 전이(Cascade)JPA 2024. 5. 2. 21:42
JPA에서 영속성 전이(Cascade)는 엔티티의 상태 변화를 관련된 엔티티들에게도 전파하는 메커니즘을 말한다. 즉, 한 엔티티에 대한 특정 연산(예: 저장, 삭제, 병합)이 그 엔티티와 관련된 다른 엔티티들에게도 적용되도록 할 수 있다. 이는 엔티티 간의 관계를 정의할 때 설정할 수 있는 옵션이며, 코드를 보다 깔끔하게 유지하고 데이터 일관성을 보장하는 데 도움이 된다.CascadeType 종류JPA에서는 다음과 같은 종류의 CascadeType 옵션이 있다.1. CascadeType.ALL설명: ALL 옵션은 모든 캐스케이드 타입(PERSIST, MERGE, REMOVE, DETACH, REFRESH)을 적용한다.모든 영속성 관련 연산이 연관된 모든 엔티티에도 적용된다.적용 사례: 엔티티와 연관된 모..
-
Spring Data JPA 가이드 모음JPA 2024. 5. 2. 00:18
Spring Boot/JPA 시작하기작성 중..Spring Boot에서 JPA 시작하기JPA 연관 관계JPA : 영속성 전이(Cascade)JPA 연관 관계의 주인과 소유 측: 개념 및 예제JPA 연관 관계 어노테이션의 속성 분석부록JPA에서 신규 엔티티 처리: EntityManager.persist()와 JpaRepository.save()의 차이점 파악하기Spring Boot JPA : Java 날짜/시간 데이터 타입과 JPA, MySQL 타임존의 관계참고 자료Baeldung - All Spring Data GuidesBaeldung - Learn JPA & HibernateBaeldung - N+1 Problem in Hibernate and Spring Data JPA[책] 자바 ORM 표준 JP..
-
JPA에서 신규 엔티티 처리: EntityManager.persist()와 JpaRepository.save()의 차이점 파악하기JPA 2024. 4. 30. 22:08
동일한 신규 Entity를 생성하여 EntityManager.persist()와 JpaRepository.save()를 통해 영속화 시켰을 때의 동작과 결과가 다를 때가 있다. 이에 대해 알아보자.EntityManager.persist()persist()를 호출할 때 전달된 엔티티 인스턴스 자체가 영속 상태가 되어 변화를 추적한다. 이 메소드는 반환값이 없으며, 저장하는 객체와 영속성 컨텍스트에 들어간 객체가 동일한 참조를 유지한다.JpaRepository.save()save() 메소드는 내부적으로 EntityManager의 persist() 또는 merge()를 호출할 수 있다. 이 메소드의 행동은 전달된 엔티티의 상태에 따라 달라진다.신규 엔티티일 경우: 일반적으로 persist()가 호출되어 엔티티..