General/JPA 3

JPA, Hibernate, spring Data JPA

JPA는 표준 인터페이스를 제공하고, Hibernate는 JPA를 구현하며, Spring Data JPA는 JPA 사용을 간편하게 만들어주기 때문에 이 세 가지를 함께 사용합니다. Spring Data JPA는 Repository 인터페이스를 통해 데이터 액세스 코드를 줄이고, Hibernate는 JPA 표준을 준수하며 실제 데이터베이스와의 통신을 담당합니다. 1. JPA (Java Persistence API)JPA는 Java 애플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의하는 표준 명세이다. JPA는 인터페이스의 집합이며, 실제 구현은 제공하지 않는다. JPA는 객체-관계 매핑(ORM)을 위한 인터페이스와 어노테이션을 제공하며, EntityManager와 같은 핵심 인터페이스를 정의함.주..

General/JPA 2025.05.09

[JPA] orphanRemoval vs CascadeType.REMOVE 정리

orphanRemoval 과 CascadeType.REMOVE 는 JPA(Java Persistence API)에서 엔티티 간의 관계를 관리하고, 둘다 부모 엔티티와 자식 엔티티 간의 관계에서 자식 엔티티를 삭제하는 데 사용된다는 점에선 같지만, 삭제 트리거(Trigger)가 다르다. ✅ 요약비교: CascadeType.REMOVE vs orphanRemoval = true항목CascadeType.REMOVEorphanRemoval = true삭제 trigger부모 엔티티 자체가 삭제될 때연관관계에서 자식이 제거될때실행 시점entityManager.remove(parent)parent.getChildren().remove(child) 등자식 삭제 방식부모와 함께 삭제부모와의 관계가 끊어지면 삭제삭제 대..

General/JPA 2025.05.07

[JPA] 연관관계 주인이란?

✅ 결론부터 말하자면연관관계의 주인은 외래 키를 직접 가지므로, 해당 테이블에 외래 키 컬럼이 존재함.연관관계의 주인이 아닌 쪽은 외래 키 컬럼이 테이블에 존재하지 않는다.@Entitypublic class Member { @Id @GeneratedValue private Long id; @ManyToOne @JoinColumn(name = "team_id") // 외래 키가 있는 쪽 → 연관관계의 주인 private Team team;}@Entitypublic class Team { @Id @GeneratedValue private Long id; @OneToMany(mappedBy = "team") // 주인이 아님 (읽기 전용) private List..

General/JPA 2025.05.07