기초/JPA
-
[JPA] 식별관계, 비식별 관계, 복합키기초/JPA 2022. 10. 11. 13:01
식별관계 부모 테이블의 기본키(FK) + 현재 테이블의 기본키를 합쳐서 기본키로 사용하는 형태 Owner ID (PK) CHILD owner_id(PK, FK) id (PK) 비식별관계 필수적 비식별 관계 : 외래 키 NULL (X) 선택적 비식별 관계 : 외래 키 NULL (O) 복합 키 : 비식별 관계 매핑 Id가 하나일 경우 @Entity public class TEST { @Id private String id; } 키가 2개 이상일 경우 - 아래와 같은 복합키에 관련된 로직을 구현해야 한다. - hasCode와 equals를 구현하여 @IdClass - 관계형 데이터베이스 설계 중심 @EmbeddedId - 객체지향 중심
-
[JPA] 객체간의 매핑기초/JPA 2022. 10. 11. 11:40
상속 DB에는 상속 개념이 없지만 DB모델링 기법중 슈퍼타입 - 서브타입 모델링 기법이 상속 개념과 비슷하다. 1. 조인전략 - 각각의 엔티티를 만든다. - 자식 테이블은 부모 테이블의 기본 키를 받아서 기본 키 + 외래 키로 사용하는 전략 - 부모 테이블에서는 자식테이블을 구분하는 컬럼을 생성 Character ID 이름 능력치 Jobs (자식 구분 컬럼) Warrior Mage Rogue Character_ID (PK, FK) 힘(power) Character_ID (PK, FK) 지능(intellect) Character_ID (PK, FK) 행운(luck) @Entity @Inheritance(strategy = InheritanceType.JOINED) @DiscriminatorColumn(na..
-
[JPA] 연관관계기초/JPA 2022. 10. 8. 18:20
방향 DB테이블의 관계는 항상 양방향이다. 객체는 한 쪽만 참조할 수 있고, 양쪽 모두 참조할 수 있다. 양방향 관계 양쪽 객체가 단방향으로 서로를 참조할수 있는 관계다. 연관관계 주인 ( Owner ) 객체가 양방향 관계가 되면 주인을 정해야 한다. 객체 그래프 탐색 관계가 형성된 객체는 참조를 통해 연관관계를 탐색할 수 있다. School school = student1.getSchool(); 객체 관계 매핑 ex) Studen (M) : School (1)의 관계 @Entity public class Student{ @Id private String id; @ManyToOne @JoinColumn(name="SCHOOL_ID") private School school; public void setS..
-
[JPA] JPA 어노테이션기초/JPA 2022. 10. 8. 17:04
@Entity 더보기 JPA가 관리하는 테이블과 매핑할 클래스 - 기본 생성자 필수 ( 파라미터가 없으며 public protected 생성자 ) - final, enum, interface, inner 클래스에 사용할 수 없다. 실제로 구현되며 변경가능한 클래스에만 적용가능 @Table @Id 더보기 기본키 @GenerationType 더보기 - IDENTITY : DB에 위임 - 데이터베이스가 식별자를 구하므로 쓰기 지연이 동작하지 않는다. (DB와 한번통신) - SEQUENCE : DB 시퀀스를 활용한 기본키 - DB의 시퀀스를 사용하므로 DB와 2번통신한다. - allocationSize : sequence 전략 최적화, 미리 지정된 갯수만큼 시퀀스를 등록한다. - TABLE : 키 생성 테이블을..
-
[JPA] 영속성 컨텍스트기초/JPA 2022. 10. 8. 15:45
영속성 컨텍스트 엔티티를 영구히 저장하고 관리하는 공간 1. 영속성 컨텍스트와 식별자 값 (@Id로 테이블의 기본 키와 매핑한 값) 영속성 컨텍스트는 엔티티를 식별자 값으로 구분한다. 따라서 영속 상태는 식별자 값이 반드시 있어야 한다. 식별자 값이 없으면 예외가 발생한다. 2. 영속성 컨텍스트와 데이터베이스 저장 Flush : JPA가 보통 트랜잭션을 커밋하는 순간 영속성 컨텍스트에 새로 저장된 엔티티를 데이터베이스에 반영하는 작업 3. 영속성 컨텍스트가 엔티티를 관리 성능 이점. - 1차 캐시 - 동일성 보장 - 트랜잭션을 지원하는 쓰기 지연 - 변경감지 - 지연로딩 1차 캐시 : 영속성 컨텍스트가 내부에서 엔티를 관리하고 있는 장소 조회 로직 1) 1차캐시에 엔티티가 존재하는 경우 find > 1차..