JPA9 [JPA] 고급 매핑 상속 관계 매핑 관계형 데이터베이스에는 객체지향 언어에서 다루는 상속이라는 개념이 없다. 대신에 슈퍼타입 서브타입 관계라는 모델링 기법이 객체의 상속 개념과 가장 유사하다. ORM에서 이야기하는 상속 관계 매핑은 객체의 상속 구조와 데이터베이스의 슈퍼타입 서브타입 관계를 매핑하는 것이다. 슈퍼타입 서브타입 논리 모델을 테이블로 구현할 때는 3가지 방법을 선택할 수 있다. 조인 전략 조인 전략은 엔티티 각각을 모두 테이블로 만들고 자식 테이블이 부모 테이블의 기본 키를 받아서 기본 키 + 외래 키로 사용하는 전략이다. 따라서 조회할 때 조인을 자주 사용한다. 테이블은 객체와 달리 타입의 개념이 없기 때문에 타입을 구분하는 컬럼을 추가해야한다. @Entity @Inheritance(strategy = Inh.. 2020. 9. 15. [JPA] 연관관계 매핑 엔티티들은 대부분 다른 엔티티와 연관관계가 있다. 하지만 객체는 참조를 사용해서 관계를 맺고 테이블은 외래 키를 사용해서 관계를 맺는다. 이 둘은 완전히 다른 특징을 가진다. 따라서 객체의 참조와 테이블의 외래 키를 매핑 해주어야 한다. 참조를 통한 연관관계는 언제나 단방향이다. 반대쪽 엔티티에 연관관계를 하나 더 만들어서 서로 참조하게 해서 양방향 연관관계를 만들 수 있지만, 정확히 이야기하자면 이것은 양방향 관계가 아니라 서로 다른 단방향 관계 2개이다. 반면에 테이블은 외래 키 하나로 양방향으로 조인할 수 있다. 외래키를 매핑 할 때에는 @JoinColomn을 사용한다. name 속성에는 매핑할 외래 키 이름을 지정한다. 이 어노테이션은 생략할 수 있다. 생략하게 된다면 외래 키를 찾을 때 기본 전.. 2020. 9. 10. [JPA] 엔티티 매핑 엔티티 매핑 JPA를 사용하는 데 가장 중요한 일은 엔티티와 테이블을 정확하게 매핑하는 것이다. 따라서 매핑 어노테이션을 숙지하고 사용해야한다. JPA는 다양한 매핑 어노테이션을 지원하는데 크게 4가지로 분류할 수 있다. -객체와 테이블 매핑: @Entity, @Table -기본 키 매핑: @Id -필드와 컬럼 매핑: @Column -연관관계 매핑: @ManyToOne, @JoinColumn @Entity JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 어노테이션을 필수로 붙여야한다. @Entity가 붙은 클래스는 JPA가 관리하는 것으로 엔티티라 부른다. 속성 기능 기본값 name JPA에서 사용할 엔티티 이름을 지정한다. 보통 기본값인 클래스 이름을 사용한다. 만약 다른 패키지에 이름이 같은.. 2020. 9. 4. [JPA] 영속성 관리 엔티티 매니저 팩토리와 엔티티 매니저 엔티티 매니저 팩토리는 이름 그대로 엔티티 매니저를 만드는 공장이다. 엔티티 팩토리 매니저는 생성 비용이 크기 때문에 한 개만 만들어서 애플리케이션 전체에서 공유하도록 설계되어 있다. 엔티티 팩토리 매니저는Persistence.createEntityManagerFactory("영속 유닛") 을 호출하면 persistence.xml에 있는 정보를 바탕으로 생성된다. 엔티티 매니저 팩토리는 여러 스레드가 동시에 접근해도 안전하지만 엔티티 매니저는 여러 스레드가 동시 접근 시 동시성 문제가 발생하므로 스레드 간에 절대 공유하면 안된다. 엔티티 매니저는 연결이 필요한 시점까지 커넥션을 얻지 않고 보통 트랜잭션을 시작할 때 커넥션을 획득한다. 영속성 컨텍스트란? 영속성 컨텍스.. 2020. 8. 31. 이전 1 2 3 다음