본문 바로가기

매핑4

[Java] JPA 강의 - 7 (고급 매핑) 상속관계 매핑 조인 전략 @DiscriminatorColumn(name = "DTYPE") -> 엔티티명이 들어감 @DiscriminatorValue("XXX") 두번의 INSERT 장점 - 테이블 정규화 - 외래키 참조 무결성 제약조건 활용 가능 - 저장공간 효율화 단점 - 조회 시 조인을 많이 사용, 성능 저하 - 조회 쿼리가 복잡함 - 데이터 저장시 INSERT SQL 2번 호출 단일 테이블 전략 @DiscriminatorColumn 쓰지 않아도 DTYPE이 생성됨 하나의 테이블에 다 넣고 DTYPE으로 구분함 장점 - 조인이 필요 없으므로 일반적으로 조회 성능이 빠름 - 조회 쿼리가 단순함 단점 - 자식 엔티티가 매핑한 컬럼은 모두 null 허용 -> 데이터 무결성 애매함 - 단일 테이블에 모든 .. 2024. 2. 5.
[Java] JPA 강의 - 6 (다양한 연관관계 매핑) 연관관계 매핑시 고려사항 3가지 1. 다중성 - 다대일 : @ManyToOne --> 대칭성이 있음 - 일대다 : @OneToMany - 일대일 : @OneToOne - 다대다 : @ManyToMany --> 실무에서 사용하지 말것 2. 단방향, 양방향 테이블 - 외래 키 하나로 양쪽 조인 가능 객체 - 참조용 필드가 있는 쪽으로만 참조 가능 - 한쪽만 참조하면 단방향 - 양쪽이 서로 참조하면 양방향 --> 객체 입장에서는 단방향 2개가 있는 것. 연관관계 주인을 확실히 알아야함 3. 연관관계의 주인 - 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺음 - 객체 양방향 관계는 참조가 2군데 있기 때문에 둘 중 테이블의 외래키를 관리할 곳을 지정해야함 - 연관관계의 주인이란? 외래키를 관리하는 참조 -.. 2024. 1. 29.
[Java] JPA 강의 - 5 (연관관계 매핑 기초) 단반향 연관관계 @ManyToOne - 다대일 매핑 - FK가 있는 쪽이 항상 N ('다'가 됨) @JoinColumn(name = "XXX_ID") - 외래키로 사용할 컬럼과 그 컬럼의 이름 지정 양방향 연관관계와 연관관계의 주인 양방향 매핑 - 외래키가 있으면 서로의 연관을 알 수 있음 - mappedBy 어떤 것과 mapping 되어 있는가? 객체와 테이블이 관계를 맺는 차이 객체와 연관관계 = 2개 - 단방향 연관관계가 2개 있는 것임 테이블 연관관계 = 1개 - FK 하나로 연관관계가 끝이 남 둘의 차이점을 이해해야 함 객체의 양방향 관계 객체의 양방향 관계는 사실 양방향 관계가 아닌 서로 다른 단방향 관계 2개임 객체를 양방향으로 참조하려면 단방향 연관관계를 2개 만들어야 함 테이블의 양방향 .. 2024. 1. 18.
[Java] JPA 강의 - 4 (엔티티 매핑) 객체와 테이블 매핑 @Entity - JPA가 관리하는 엔티티 - 기본 생성자 필수 - 저장할 필드에 final 사용하면 안됨 - 속성 : name -> JPA에서 사용할 엔티티 이름을 지정 @Table 속성 - name : 매핑할 테이블 이름 - catalog : 데이터베이스 catalog 매핑 - schema : 데이터베이스 스키마 매핑 - uniqueConstraints : DDL 생성 시 유니크 제약 조건 생성 데이터베이스 스키마 자동 생성 - DDL을 애플리케이션 실행 시점에 자동 생성 (ex. Insert into) - 생성된 DDL은 개발 장비에서만 사용 (운영서버에서 사용X) 속성 - create : DROP + CREATE 기존 테이블 삭제 후 다시 생성 - create-drop : 종료.. 2024. 1. 17.