본문 바로가기

Back-End/자바 ORM 표준 JPA 프로그래밍7

[JPA] 자바 ORM 표준 JPA 프로그래밍_9장 9장 값 타입 ∘ JPA의 데이터 타입은 크게 엔티티 타입과 값 타입으로 분류됨. - 엔티티 타입은 엔티티 객체이고, 값 타입은 단순히 값을 나타내는 타입이나 객체 ∘ 값 타입은 기본값 타입, 임베디드 타입, 컬렉션 값 타입으로 나뉨 ∘ 모든 값 타입은 엔티티의 생명주기에 의존 9.1 기본값 타입 ∘ 자바 기본 타입, 래퍼 클래스, String ∘ 엔티티와 달리 식별자 값이 없고, 독자적인 생명주기가 없음 9.2 임베디드 타입(복합 값 타입) ∘ 직접 정의한 새로운 값 타입 ∘ 엔티티가 가지고 있는 데이터를 응집력 있게 만듦 - [String city, String street, String zipcode] ⇒ [Address homeAddress] ∘ @Embedded, @Embeddable 사용. 둘.. 2023. 6. 27.
[JPA] 자바 ORM 표준 JPA 프로그래밍_7장 7장 고급 매핑 7.1 상속 관계 매핑 ∘ 관계형 데이터베이스에는 객체지향 언어에서의 상속과 같은 개념이 없음 ∘ ORM에서의 상속 관계 매핑은 객체의 상속 구조와 데이터베이스의 슈퍼타입 서브타입 관계를 매핑하는 것 ∘ 슈퍼타입 서브타입 논리 모델을 실제 물리 모델 테이블로 구현하는 방법 - 각각의 테이블로 변환 : 각각을 모두 테이블로 만들고 조인 사용해서 조회. 조인 전략. - 통합 테이블로 변환 : 테이블 하나만 사용해서 통합. 단일 테이블 전략. - 서브타입 테이블로 변환 : 서브 타입마다 하나의 테이블 만듦. 구현 클래스마다 테이블 전략. 7.1.1 조인 전략 ∘ 조인 전략 : 엔티티 각각을 모두 테이블로 만들고 자식 테이블이 부모 테이블의 기본 키를 받아서 기본 키 + 외래 키로 사용 ∘ 테이.. 2023. 6. 24.
[JPA] 자바 ORM 표준 JPA 프로그래밍_6장 6장 다양한 연관관계 매핑 ∘ 엔티티의 연관관계를 매핑할 때 고려할 것 - 다중성 : 다대일, 일대다, 일대일, 다대다 - 단방향, 양방향 - 연관관계의 주인 : 외래 키 6.1 다대일 ∘ 데이터베이스 테이블의 일, 다 관계에서 외래 키는 항상 다쪽에 있음 ⇒ 연관관계의 주인은 다쪽 6.1.1 다대일 단방향 [N:1] ∘ 회원은 팀 참조 가능 & 팀은 회원 참조 불가능 ⇒ 다대일 단방향 ∘ @JoinColumn으로 외래키 관리 6.1.2 다대일 양방향 [N:1, 1:N] ∘ 양방향은 외래 키가 있는 쪽이 연관관계의 주인 - 주인이 아닌 필드는 조회와 객체 그래프 탐색에 사용됨 ∘ 양방향 연관관계는 항상 서로를 참조함 - 편의 메소드 작성 - 양쪽에 편의 메소드를 작성하는 경우 무한루프에 빠지지 않도록 주.. 2023. 6. 20.
[JPA] 자바 ORM 표준 JPA 프로그래밍_5장 5장 연관관계 매핑 기초 ∘ 대부분의 엔티티는 다른 엔티티들과 연관관계를 가짐 ∘ 객체 관계 매핑(ORM) ∘ 객체는 참조를 이용해서 관계를 맺음 ∘ 테이블은 외래 키를 사용해서 관계를 맺음 ∘ 연관관계 매핑 - 방향 : 단방향, 양방향 - 다중성 : 다대일, 일대다, 일대일, 다대다 - 연관관계의 주인 5.1 단방향 연관관계 객체 테이블 참조로 연관관계를 맺음 외래 키로 연관관계를 맺음 참조를 사용하는 연관관계는 단방향 외래 키를 사용하는 연관관계는 양방향 양방향 연관관계를 만들려면 단뱡향 2개 필요 5.1.1 순수한 객체 연관관계 ∘ 객체 그래프 탐색 : 객체는 참조를 사용해서 연관관계 탐색 가능 5.1.2 테이블 연관관계 ∘ 조인 : 데이터베이스는 외래 키를 사용해서 연관관계 탐색 가능 5.1.3 .. 2023. 6. 5.
[JPA] 자바 ORM 표준 JPA 프로그래밍_4장 4장 엔티티 매핑 ∘ JPA를 사용할 때 엔티티와 테이블을 정확히 매핑하는 것이 중요 ∘ JPA가 지원하는 매핑 어노테이션 - 객체와 테이블 매핑 : @Enity, @Table - 기본 키 매핑 : @Id - 필드와 컬럼 매핑 : @Column - 연관관계 매핑 : @ManyToOne, @JoinColumn 4.1 @Entity ∘ JPA를 사용해서 테이블과 매핑할 클래스에 붙임 ∘ JPA가 관리하는 엔티티 ∘ 속성 : name ∘ 주의사항 - 기본 생성자가 있어야 됨 : JPA가 엔티티 객체를 생성할 때 기본 생성자를 사용하기 때문 - final 클래스, enum, interface, inner 클래스에 사용할 수 없음 - 저장할 필드에 final을 사용하면 안 됨 4.2 @Table ∘ 엔티티와 매핑.. 2023. 5. 29.
[JPA] 자바 ORM 표준 JPA 프로그래밍_3장 3장 영속성 관리 ∘ 엔티티 매니저 : 엔티티를 저장, 수정, 삭제, 조회하는 등 엔티티와 관련된 모든 일을 처리함 ∘ '엔티티 매니저 = 엔티티를 저장하는 가상의 데이터베이스'라고 생각하면 됨 3.1 엔티티 매니저 팩토리와 엔티티 매니저 ∘ 엔티티 매니저 팩토리 생성 코드 EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpabook"); ∘ 엔티티 매니저 팩토리에서 엔티티 매니저 생성 EntityManager em = emf.createEntityManager(); ∘ 엔티티 매니저 팩토리 : 엔티티 매니저를 만드는 공장 - 엔티티 매니저 팩토리를 생성하는 데 드는 비용이 크기 때문에 애플리케이션 당 1개만 만들어서 공유해서 사용.. 2023. 5. 29.
[JPA] 자바 ORM 표준 JPA 프로그래밍_1장 1장 JPA 소개 ∘ 객체 지향의 장점을 포기하고 단순히 테이블에 맞추어 데이터 전달 역할만 하도록 개발하는지 의문 ∘ 객체와 관례형 데이터베이스의 차이(패러다임의 차이. 둘은 다른 역할을 가지니까.)로 인해 객체 모델이 데이터 중심의 모델로 바뀌었음 ∘ ORM(Object Relational Mapping) 프레임워크 : 객체와 관계형 데이터베이스 간의 차이를 중간에서 해결해줌 ∘ JPA : 자바 진영의 ORM 기술 표준 - CRUD SQL을 알아서 처리해줌 - 객체 모델링과 관계형 데이터베이스 사이의 차이점 해결 - 실행 시점에 자동으로 SQL을 만들어서 실행 - 조회된 결과를 객체로 매핑하는 작업도 대부분 자동으로 처리해줌 - 객체 중심으로 개발 ⇒ 생산성 향상, 유지보수 용이 - 데이터베이스 변경.. 2023. 5. 20.