본문 바로가기

Spring/JPA10

#6 다양한 연관관계 매핑 다양한 연관관계 매핑 엔티티의 연관관계를 매핑할 때는 다음 3가지를 고려해야 한다. ■ 다중성 연관관계에는 다음과 같은 다중성이 있다. ● 다대일(@ManyToOne) ● 일대다(@OneToMany) ● 일대일(@OneToOne) ● 다대다(@ManyToMany) ■ 단방향, 양방향 테이블은 외래 키 하나로 조인을 사용해서 양방향으로 쿼리가 가능하므로 방향이라는 개념이 없다. 반면에 객체는 참조용 필드를 가지고 있는 객체만 연관 객체를 조회할 수 있다. 객체 관계에서 한쪽만 참조하는 것을 단방향 관계라 하고, 양쪽이 서로 참조하는 것을 양방향 관계라 한다. ■ 연관관계의 주인 객체를 양방향 관계로 구성하면 각 객체는 연관관계를 서로 참조할 수 있다. 따라서 객체의 연관관계를 관리하는 포인트는 2곳이 된다.. 2021. 8. 28.
#5 연관관계 매핑 기본 연관관계 매핑 기본 엔티티들은 대부분 다른 엔티티와 연관관계가 있다. 그런데 객체는 참조(주소)를 사용해서 관계를 맺고 테이블은 외래 키를 사용해서 관계를 맺는다. 이 둘은 완전히 다른 특징을 갖는다. JPA에서는 객체의 참조와 테이블의 외래 키를 매핑하기 위해서 여러 다양한 방법을 지원한다. 1. 단방향 연관관계 Member와 Team이 있다고 하자. Member가 하나의 Team에만 소속될 수 있다고 한다면 Member와 Team은 다대일 관계라고 볼 수 있다(Member가 '다'). [Member와 Team의 관계 - DB] DB에서 테이블상 관계는 위의 예시처럼 구성될 것이다. DB에서 테이블은 연관관계 방향이 없다. Member는 TEAM_ID(FK)로, Team도 PK로 서로를 자유롭게 조회할.. 2021. 8. 27.
#4 엔티티 매핑 엔티티 매핑 JPA를 사용하는데 가장 중요한 일은 엔티티와 테이블을 정확히 매핑하는 것이다. JPA는 다양한 매핑 어노테이션을 지원하는데 다음과 같이 크게 4가지로 분류할 수 있다. ● 객체와 테이블 매핑 : @Entity, @Table ● 기본 키 매핑 : @Id ● 필드와 컬름 매핑 : @Column ● 연관관계 매핑 : @ManyToOne, @JoinColumn 1. 객체와 테이블 매핑 ■ @Entity ● @Entity가 붙은 클래스는 JPA가 관리, 엔티티라 한다. ● JPA를 사용해서 테이블과 매핑할 클래스는 @Entity가 필수이다. ● JPA가 엔티티 객체를 생성할 때 기본 생성자를 사용하므로, 기본 생성자가 필수이다(파라미터가 없는 public 또는 protexted 생성자). ● fin.. 2021. 8. 27.
#3 영속성 관리 영속성 관리 JPA를 이해하는데 가장 중요한 용어는 영속성 컨텍스트(persistence context)라고 할 수 있다. 이는 '엔티티를 영구 저장하는 환경'이라는 뜻으로 해석 할 수 있다. 영속석 컨텍스트는 눈에 보이지 않는 논리적인 개념으로, JPA에서는 엔티티 매니저를 통해 엔티티를 영속성 컨택스트에 보관하고 관리한다. 예를 들어 EntityManager.persist(entity)를 실행하면 바로 DB에 바로 저장되는 것이 아니라, 영속성 컨택스트에 엔티티가 저장된다. 이런 식으로 JPA는 엔티티를 DB에 바로 저장하지 않고 우선적으로 영속성 컨택스트에 저장하고 관리한다. 1. 엔티티의 생명주기 엔티티의 생명주기는 다음과 같이 분류될 수 있다. ● 비영속 : 영속성 컨텍스트와 전혀 관계가 없는 .. 2021. 8. 25.