본문 바로가기
728x90

JPA3

엔티티 매핑 JPA가 지원하는 매핑 어노테이션은 다음과 같이 4가지로 분류할 수 있다. 1. 객체와 테이블 매핑: @Entity, @Table 2. 기본 키 매핑: @Id 3. 필드와 컬럼 매핑: @Column 4. 연관관계 매핑: @ManyToOne, @JoinColumn @Entity JPA를 사용해 테이블과 클래스를 매핑할 때 사용한다. @Entity 속성은 다음과 같다. 속성 기능 기본값 name JPA에서 사용할 엔티티 이름을 지정한다. 보통은 디폴드값인 클래스 이름을 사용한다. 다른 패키지에 이름이 같은 엔티티 클래스가 있으면 이 속성으로 이름을 지정해 충돌을 피할 수 있다. 클래스 이름 @Entity를 적용하기 위해선 다음과 같은 점을 따라야 한다. 1. 기본 생성자가 존재해야 한다. 접근자는 publi.. 2022. 7. 26.
연관관계 매핑 기초 테이블들은 FK를 통해 관계를 맺고 객체는 참조를 통해 관계를 맺는다. 이 둘은 완전히 다른 특징을 가진다. 그때문에 ORM에서 가장 어려운 부분이 객체 연관 관계와 테이블 연관관계를 매핑하는 일이다. 용어 정리 객체 참조와 테이블 FK를 매핑하기 전에 용어 정리부터하자. 방향(direction): 양방향, 단방향이 존재한다. 단방향: 하나의 관계에서 한 쪽만 참조한다. x -> y 이거나 y -> x 이다. 양방향: 하나의 관계에서 양쪽이 모두 참조하고 있다. x -> y 임과 동시에 y -> x이다. 방향은 객체관계에만 존재하고 테이블 관계는 항상 양방향이다. 다중성(Multiplicity): N:1, 1:N, 1:1, N;M 연관관계의 주인(owner): 객체를 양방향 연관관계로 만들면 연관관계의 .. 2022. 7. 18.
영속성 컨텍스트 엔티티 매니저는 엔티티를 저장하고, 삭제하는 등 엔티티와 관련된 모 든 일을 처리한다. 개발자 입장에서 엔티티 매니저는 엔티티를 저장하는 가상의 DB이다. 엔티티 매니저 팩토리와 엔티티 매니저 DB를 하나만 사용하는 애플리케이션은 통상적으로 EntityManagerFactory를 하나만 생성한다. 엔티티 매니저 팩토리를 생성하는 비용은 상당히 크다. 그때문에 한 개만 만들어 애플리케이션 전체가 공유하게 설계되 있다. 반면, 엔티티 매니저를 생성하는 비용은 크지 않다. 엔티티 매니저 팩토리는 thread-safe 하므로 스레드 간에 공유가 가능하다. 엔티티 매니저는 멀티 스레드 환경에서 동시성 문제가 존재하므로 스레드 간의 공유가 안된다. 엔티티 매니저는 DB 연결이 꼭 필요한 시점까지 커넥션을 얻지 않는.. 2022. 7. 4.
728x90