김영한(인프런 강의)
-
고급매핑 - 실전예제김영한(인프런 강의)/자바 ORM 표준 JPA 프로그래밍 2020. 10. 22. 13:50
도메인 테이블(싱글테이블 전략 사용함) 코드 @Entity @DiscriminatorValue("앨범") public class Album extends Item{ private String artist; private String etc; Getter(), Setter()... } @Entity @DiscriminatorValue("영화") public class Movie extends Item{ private String director; private String actor; Getter(), Setter()... } @Entity @DiscriminatorValue("책") public class Book extends Item { private String autor; private Strin..
-
고급매핑 - @MappedSuperclass김영한(인프런 강의)/자바 ORM 표준 JPA 프로그래밍 2020. 10. 22. 12:10
@MappedSuperclass 아래와 같이 공통 매핑 정보가 필요 할 때 사용함 1. 특징 1) 공통 매핑 정보가 필요할 때 사용(id, name) 2) 상속관계 매핑X 3) 엔티티X, 테이블과 매핑X 4) 부모 클래스를 상속 받는 자식 클래스에 매핑 정보만 제공 5) 조회, 검색 불가(em.find(BaseEntity) 불가) 6) 직접 생성해서 사용할 일이 없으므로 추상 클래스 권장 7) 테이블과 관계 없고, 단순히 엔티티가 공통으로 사용하는 매핑 정보를 모으는 역할 8) 주로 등록일, 수정일, 등록자, 수정자 같은 전체 엔티티에서 공통 으로 적용하는 정보를 모을 때 사용 9) @Entity 클래스는 엔티티나 @MappedSuperclass로 지 정한 클래스만 상속 가능 2. 코드 @Entity p..
-
고급 매핑 - 상속관계 매핑김영한(인프런 강의)/자바 ORM 표준 JPA 프로그래밍 2020. 10. 20. 14:07
상속관계 매핑 1. 정리 1) 관계형 데이터베이스는 상속 관계X 2) 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사 3) 상속관계 매핑 상속관계 매핑이란? 객체의 상속과 구조와 DB의 슈퍼타입 서브타입 관계를 매핑 2. 사용 어노테이션 @Inheritance(strategy=InheritanceType.XXX) JOINED: 조인 전략 SINGLE_TABLE: 단일 테이블 전략 TABLE_PER_CLASS: 구현 클래스마다 테이블 전략 @DiscriminatorColumn(name="DTYPE") 엔티티 이름은 수정이가능하다(DTYPE) Item의 컬럼명 @DiscriminatorValue(“XXX") 상위 클래스에 넣을 이름 이름은 수정이 가능하다 기본 옵션은 엔티티 이름이다(클래스 이름)..
-
연관관계 매핑 기초 - 실전예제김영한(인프런 강의)/자바 ORM 표준 JPA 프로그래밍 2020. 10. 19. 13:12
실습 1. 관계도 2. ERD 3. 엔티티 상세 4. 참고사항 1) 테이블의 N:M 관계는 중간 테이블을 이용해서 1:N, N:1 2) 실전에서는 중간 테이블이 단순하지 않다. 3) @ManyToMany는 제약: 필드 추가X, 엔티티 테이블 불일치 4) 실전에서는 @ManyToMany 사용X 5. 코드 @Entity public class Category { @Id @GeneratedValue private Long id; private String name; @ManyToOne @JoinColumn(name = "PARENT_ID") private Category parent; @OneToMany(mappedBy = "parent") private List child = new ArrayList(); ..
-
다양한 연관관계 매핑김영한(인프런 강의)/자바 ORM 표준 JPA 프로그래밍 2020. 10. 19. 12:04
연관관계 매핑 시 중요한 3가지 1. 다중성 1) 다대일 - @ManyToOne 2) 일대다 - @OneToMany 3) 일대일 - @OneToOne 4) 다대다 - @ManyToMany 5) 다대일의 반대는 일대다, 일대일의 반대는 일대일, 다대다의 반대는 다대다처럼 대칭을 이룬다. 2. 단방향, 양방향 1) 테이블 - 외래 키 하나로 양쪽 조인 가능 - 사실 방향이라는 개념이 없음 2) 객체 - 참조용 필드가 있는 쪽으로만 참조 가능 - 한쪽만 참조하면 단방향 - 양쪽이 서로 참조하면 양방향 3. 연관관계의 주인 1) 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺음 2) 객체 양방향 관계는 A->B, B->A 처럼 참조가 2개라 둘 중 테이블의 외래키를 관리할 곳을 지정해야함 4) 연관관계의 주..
-
연관관계 매핑 기초 - 실습김영한(인프런 강의)/자바 ORM 표준 JPA 프로그래밍 2020. 10. 8. 15:45
테이블 구조 객체 구조 코드 @Entity public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; @Column(name = "USERNAME") private String name; private int age; @ManyToOne @JoinColumn(name = "TEAM_ID") private Team team; @OneToMany @JoinColumn(name = "member") private List orders = new ArrayList(); Getter(), Setter() ... } @Entity @Table(name = "ORDERS") public class Order { @Id @..
-
연관관계 매핑 기초 - 양방향 연관관계김영한(인프런 강의)/자바 ORM 표준 JPA 프로그래밍 2020. 10. 7. 15:30
객체와 테이블이 관계를 맺는 관계 1. 양방향 객체 연관관계 1) 객체의 양방향 관계는 사실 양방향 관계가 아니라 서로 다른 단 뱡향 관계 2개다. 2) 객체를 양방향으로 참조하려면 단방향 연관관계를 2개 만들어 야 한다. - A -> B (a.getB()) - B -> A (b.getA()) class A { B b; } class B { A a; } 2. 테이블 연관관계 1) 테이블은 외래 키 하나로 두 테이블의 연관관계를 관리 2) MEMBER.TEAM_ID 외래 키 하나로 양방향 연관관계 가짐 (양쪽으로 조인할 수 있다.) - 아래와 테이블 관계처럼 둘중 하나로 왜래 키를 관리해야 한다. SELECT * FROM MEMBER M JOIN TEAM T ON M.TEAM_ID = T.TEAM_ID S..
-
연관관계 매핑 기초 - 단방향 연관관계김영한(인프런 강의)/자바 ORM 표준 JPA 프로그래밍 2020. 10. 7. 13:19
연관관계를 왜 만드는가? 객체지향 설계의 목표는 자율적인 객체들의 협력 공동체를 만드는 것이다. – 조영호(객체지향의 사실과 오해) 예상 시나리오 1) 회원과 팀이 있다. 2) 회원은 하나의 팀에만 소속될 수 있다. 3) 회원과 팀은 다대일 관계다. 연관관계 없는 객체 모델링 1. 연관관계(연관관계 없음) 2. 특징 1) 객체를 테이블에 맞추어 모델링을 해야 한다. - 참조 대신에 외래 키를 그대로 사용 @Entity public class Member { @Id @GeneratedValue private Long id; @Column(name = "USERNAME") private String name; @Column(name = "TEAM_ID") private Long teamId; Getter()..