본문 바로가기

JPA14

다양한 연관관계 매핑 연관관계 매핑시 고려사항 3가지 다중성 단방향, 양방향 연관관계의 주인 다중성 다대일 - @ManyToOne 일대다 - @OneToMany 일대일 - @OneToOne 다대다 - @ManyToMany 대칭성을 지니고 있기에, 매핑 시 반대편으로도 생각해볼 수 있도록 하자 단방향 과 양방향 테이블 외래키 하나로 양쪽 조인 가능 사실상 방향이란 개념이 없다. 객체 참조용 필드가 있는 쪽으로만 참조 가능 한쪽만 참조하면 단방향 양쪽이 서로 참조하면 양방향 객체의 경우 참조가 있어야만 조회가 가능하다 연관관계의 주인 테이블의 경우 외래키 하나로 두 테이블이 연관관계를 맺지만, 객체의 경우 각각 단방향으로 참조를 하기 때문에 양방향 (단방향 2개)을 가지게 된다. 이러한 이유로 둘 중 테이블의 외래키를 관리할 곳.. 2021. 1. 12.
연관관계 매핑 기초 핵심은 객체와 관계형 데이터베이스의 패러다임 불일치 양방향 연관관계와 연관관계의 주인 테이블은 방향이란 개념이 없다. 외래키 자체로 양방향 관계를 가질 수 있다. 하지만, 객체는 참조의 개념이기에 해당 객체를 서로 참조시켜야만 양방향 관계를 가질 수 있다. 연관관계의 주인과 mappedBy 객체와 테이블 간에 연관관계를 맺는 차이를 이해해야 한다. 객체와 테이블이 관계를 맺는 차이 객체 연관관계 = 2개 회원 → 팀 연관관계 1개 (단방향) 팀 → 회원 연관관계 1개 (단방향) 객체의 양방향 관계는 사실 양방향 관계가 아니라 서로 다른 단 뱡향 관계 2개 이다. 사실 양방향이 의미하는 바는 단방향으로 두개 모두 연결하는 것이다. 테이블 연관관계 = 1개 회원 ↔ 팀 연관관계 1개 (양방향) 테이블은 외래.. 2021. 1. 12.
엔티티 매핑 객체와 관계형 데이터베이스를 어떻게 매핑하여 사용할지에 대한 고민 객체와 테이블 매핑: @Entity, @Table 필드와 컬럼 매핑: @Column 기본 키 매핑: @Id 연관관계 매핑: @ManyToOne, @JoinColumn @Entity @Entity 가 붙은 클래스는 JPA 가 관리하는 엔티티라 한다. JPA 를 사용해서 테이블과 매핑할 클래스는 @Entity 를 필수적으로 작성해주어야 한다. 주의 사항 기본 생성자 필수 (파라미터가 없는 public 또는 protected 생성자) - JPA 내부 메커니즘 활용하기 위한 리플렉션 등에서 사용 final 클래스, enum, interface, inner 클래스 사용하면 안된다. 저장할 필드에 final 사용하면 안된다. @Table 엔티티와 매.. 2021. 1. 10.
영속성 컨텍스트 JPA 가장 중요한 2가지 객체와 관계형 데이터베이스 매핑하기 (Object Relational Mapping) 영속성 컨텍스트 - 실제 JPA 가 어떻게 동작하는지 Entity Manager 와 EntityManagerFactory 고객의 요청마다 EntityManagerFactory 를 통하여 EntityManager 생성하여 영속성 컨텍스트를 관리한다. 영속성 컨텍스트 JPA 를 이해하는데 가장 중요한 용어 "엔티티를 영구 저장하는 환경" 이라는 뜻 EntityManager.persist(entity); (실제 디비 저장이 아니다) 영속성 컨텍스트는 논리적인 개념 눈에 보이지 않는다. 엔티티 매니저를 통해서 영속성 컨텍스트에 접근 엔티티의 생명주기 비영속 (new / transient) : 영속성 .. 2021. 1. 10.