Spring52 상속관계 매핑 주요 어노테이션 Inheritance(strategy = Inheritance.TYPE.XXX) JOINED : 조인 전략 SINGLE_TABLE : 단일 테이블 전략 TABLE_PER_CLASS : 구현 클래스마다 테이블 전략 DiscriminatorColumn(name = "DTYPE") JOINED는 선언해주는 것이 좋다. SINGLE_TABLE은 선언하지 않아도 자동 생성 DiscriminatorValue("XXX") 조인 전략(기본적으로는 조인 전략을 가져간다) 장점 테이블 정규화 외래 키 참조 무결성 제약조건 활용가능 저장공간 효율화 단점 조회 시 조인을 많이 사용한다. 성능 저하 조회 쿼리가 복잡하다. 데이터 저장 시 INSERT SQL 2번 호출 단일 테이블 전략 장점 조인이 필요 없으므로.. 2021. 5. 12. 일대다 [1:N] 일대다 단방향 정리 일대다 단방향은 일대다[1:N]에서 일(1)이 연관관계의 주인 테이블 일대다 관계는 항상 다(N)쪽에 외래키가 있다. 객체와 테이블의 차이 때문에 반대편 테이블의 외래 키를 관리하는 특이한 구조 @JoinColumn을 꼭 사용해야 한다. 그렇지 않으면 조인 테이블 방식을 사용한다. (중간에 테이블을 하나 추가한다.) 일대다 단방향 매핑의 단점 엔티티가 관리하는 외래 키가 다른 테이블에 있다. 연관관계 관리를 위해 추가로 UPDATE SQL 실행 일대다 단방향 매핑보다는 다대일 양방향 매핑을 사용하자 일대다 양방향 정리 이런 매핑은 공식적으로 존재X @JoinColumn(insertable = false, updateable = false) 읽기 전용 필드를 사용해서 양방향 처럼 사용하.. 2021. 5. 11. 다대일 [N:1] 연관관계 매핑 시 고려사항 3가지 다중성 단방향, 양방향 연관관계의 주인 다중성 다대일 : @ManyToOne 일대다 : @OneToMany 일대일 : @OneToOne 다대다 : @ManyToMany (실무에서 사용하면 안된다) 단방향, 양방향 테이블 외래 키 하나로 양쪽 조인 가능 사실 방향이라는 개념이 없다. 객체 참조용 필드가 있는 쪽으로만 참조 가능 한쪽만 참조하면 단방향 양쪽이 서로 참조하면 양방향 연관관계의 주인 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺음 객체 양방향 관계는 A->B, B->A처럼 참조가 2군데 객체 양방향 관계는 참조가 2군데 있다. 둘중 테이블의 외래 키를 관리할 곳을 지정해야 한다. 연관관계의 주인 : 외래 키를 관리하는 참조 주인의 반대편 : 외래 키에 영향.. 2021. 5. 10. 단방향 연관관계 목표 객체와 테이블 연관관계의 차이를 이해 객체의 참조와 테이블의 외래 키를 매핑 용어 이해 방향(Direction) : 단방향, 양방향 다중성(Multiplicity) : 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M) 이해 연관관계의 주인(Owner) : 객체 양방향 연관관계는 관리 주인이 필요 객체를 테이블에 맞추어 데이터 중심으로 모델링하면, 협력 관계를 만들 수 없다. 테이블은 외래 키로 조인을 사용해서 연관된 테이블을 찾는다. 객체는 참조를 사용해서 연관된 객체를 찾는다. 테이블과 객체 사이에는 이런 큰 간격이 있다. Reference 자바 ORM 표준 JPA 프로그래밍 2021. 5. 8. 기본 키 매핑 기본 키 매핑 어노테이션 @Id @GeneratedValue @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; 기본 키 매핑 방법 직접 할당 : @Id만 사용 자동 생성(@GeneratedValue) IDENTITY : 데이터베이스에 위임, MYSQL SEQUENCE : 데이터베이스 시퀀스 오브젝트 사용, ORACLE @SequenceGenerator 필요 TABLE : 키 생성용 테이블 사용, 모든 DB에서 사용 @TableGenerator 필요 AUTO : 방언에 따라 자동 지정, 기본 값 IDENTITY 전략 - 특징 기본 키 생성을 데이터베이스에 위임 주로 MySQL, PostgreSQL, SQL Server, DB2에서 사.. 2021. 5. 7. 데이터베이스 스키마 자동 생성 데이터베이스 스키마 자동 생성 DDL을 애플리케이션 실행 시점에 자동 생성 테이블 중심 -> 객체 중심 데이터베이스 방언을 활용해서 데이터베이스에 맞는 적절한 DDL 생성 이렇게 생성된 DDL은 개발 장비에서만 사용 생성된 DDL은 운영서버에서는 사용하지 않거나, 적절히 다듬은 후 사용 데이터베이스 스키마 자동 생성 - 속성 hibernate.hbm2ddl.auto 옵션 설명 create 기존테이블 삭제 후 다시 생성(DROP + CREATE) create-drop create와 같으나 종료시점에 테이블 DROP update 변경분만 반영(운영DB에는 사용하면 안됨) validate 엔티티와 테이블이 정상 매핑되었는지만 확인 none 사용하지 않음 데이터베이스 스키마 자동 생성 - 주의 운영 장비에는 절.. 2021. 5. 7. 이전 1 ··· 5 6 7 8 9 다음