JPA 4

[JPA] 양방향 매핑과 연관관계

Spring에서 연관관계를 매핑한다고 한다면 대표적으로 단방향 또는 양방향일 텐데오늘은 둘 중에 양방향에 대해 이야기해보겠습니다.JPA 프로그래밍 책을 기반으로 작성하였습니다.양방향이란? 위에 객체 연관관계를 살펴보자면 보다시피 Member와 Team은 다대일 관계이다. 반대로 하면 일대다 관계이다.일대다는 여러 개와 연관관계를 맺기 때문에 컬렉션을 사용하여 Team.members를 List로 선언한 것을 볼 수 있다.더보기여기서 List로 컬렉션을 추가하였다고 무조건 List만 쓸 수 있는 것이 아닌 Collection, Set, Map과 같은 다양한 컬렉션을 지원하기 때문에 필요에 따라서 사용하면 된다. 테이블의 관계데이터베이스에서 테이블은 외래 키 단 하나로도 양방향으로 조회가 가능하다. 그래서 객..

JPA 2024.08.09

[JPA] 고아객체? 그게 먼데

고아 객체 스프링에서 엔티티끼리 연관관계를 연결하는 것은 매우 흔한 일이다.그래서 JPA는 부모 엔티티와 연관관계가 끊어져버린 자식 엔티티를 자동으로 삭제해 주는 기능을 고아 객체 제거라고 한다.// 고아 객체를 ORPHAN이라고 하기도 함 이러한 기능을 JPA에서 제공하니 안 써볼 수 없을 것이다.그러니 이러한 기능을 사용한 코드를 살펴보자.사용 예시@Entitypublic void Parent { @Id @GeneratedValue private Long id; @OneToMany(mappedBy = "parent", orphanRemoval = true) private List children = new ArrayList(); ....} 위에 코드를 보..

JPA 2024.07.31

[JPA] 영속성 컨텍스트란?

JPA의 기본 중에 기본이고 이해하기 위해서는 영속성 컨텍스트(persistence context)라는 단어이다. 영속성 컨텍스트를 번역하자면 '엔티티를 영구 저장하는 환경'이라는 뜻이다.엔티티를 저장하거나 조회할 때 엔티티 매니저를 사용하여 영속성 컨텍스트에 엔티티를 저장또는 보관한다. 엔티티의 생명주기엔티티에는 4가지 상태가 있다.1. 비영속2. 영속3. 준영속4. 삭제 이 4가지를 하나하나 자세히 알아보자.// 코드에서의 em은 엔티티 매니저의 약자1. 비영속(new/transient)영속성 컨텍스트와 전혀 관계가 없는 상태.말 그대로 영속성 컨텍스트와는 전혀 관계가 없는 상태이다.만약 엔티티 객체를 생성했다고 가정해 보면 그 엔티티는 순수하게 객체 상태이지 디비에 저장이 되지 않은 상태이다. 저장..

JPA 2024.03.10

[JPA] 1차 캐시란?

영속성 컨텍스트란?1차 캐시에 대해 이야기하면서 영속성 컨텍스트에 대해 말을 빼먹을 수 없다.영속성 컨텍스트란 엔티티를 영구히 저장하는 환경이라는 뜻이다.만약에 엔티티를 저장 또는 조회를 시도한다면 엔티티 매니저가 영속성 컨텍스트를 사용하여 관리한다. 여기서 말하는 영속성 컨텍스트는 우리가 개발을 하면서 본 경우가 없을 것이다. 왜냐면 여기서 말하는 영속성 컨텍스트는 논리적인 개념일 뿐이지 볼 수 있는 것은 아니다. 그리고 엔티티 매니저를 생성하면서 영속성 컨텍스트는 딱 하나 만들어진다.이제 1차 캐시에 대해 이야기할 건데 영속성 컨텍스트를 이해했다는 가정하에 이야기해 보자. 1차 캐시란?1차 캐시는 영속성 컨텍스트의 특징 중에 하나이다.영속성 컨텍스트의 특징은 이것 말고도 많지만 오늘은 1차 캐시에 대..

JPA 2024.03.05