목록BE (354)
오봉이와 함께하는 개발 블로그
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bcW5Wx/btrFT2KVT4U/5lXvaIwmrrKHNep3Ov7swK/img.png)
@MappedSuperclass 상속관계 매핑과는 관련이 별로 없고, 엔티티와 테이블과의 매핑과도 마찬가지다. 부모 클래스를 상속 받는 자식 클래스에만 매핑 정보가 제공되기 때문에 객체의 입장에서 같은 이름의 컬럼을 가진 변수가 있을 때 부모 클래스에 두고 속성만 상속받아 사용하고 싶을 때 사용한다. 조회, 검색이 불가능하기 때문에 직접 생성해서 사용할 일이 없어서 추상 클래스로 사용하는 것을 권장한다.(em.find(BaseEntity) 불가능) 즉, 공통 매핑 정보가 필요할 때 사용한다.(id, name) 사용 private String createdBy; private LocalDateTime createdDate; private String lastModifiedBy; private LocalDa..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b1gsG7/btrFUhVkzM5/fgD8yseHXDyQ8iqTn61Ij1/img.png)
상속관계 매핑 관계형 데이터베이스는 상속 관계라는 것이 없다. 관계형 DB에는 슈퍼타입, 서브타입 관계라는 모델링 기법이 객체 상속과 유사하다. 상속관계 매핑 : 객체의 상속 구조와 DB의 슈퍼타입 서브타입 관계를 매핑 상속관계 매핑 방법 슈퍼타입, 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법 각각 테이블로 변환 -> 조인 전략 통합 테이블로 변환 -> 단일 테이블 전략 서브타입 테이블로 변환 -> 구현 클래스마다 테이블 전략 어노테이션 @Inheritance(strategy=InheritanceType.XXX) JOINED : 조인 전략 SINGLE_TABLE : 단일 테이블 전략 TABLE_PER_CLASS : 구현 클래스마다 테이블 전략 @DiscriminatorColumn(name="DT..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cxUwGu/btrFP0lelBB/kb2vAIxYWrEIfKwTjKs7tk/img.png)
다양한 연관관계 매핑 주문과 배송은 1:1 (@OneToOne) 상품과 카테고리는 N:M (@ManyToMany) 엔티티 ERD 엔티티 상세 기존 코드 https://5bong2-develop.tistory.com/223 변경 코드 DeliveryStatus는 enum으로 만들기만 했다. Member @Entity @Getter @Setter public class Member { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "MEMBER_ID") private Long id; private String name; private String city; private String street; private String zipcod..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/EePii/btrFKGnYNyv/7CHs9woVK4uDLQFxFhKixk/img.png)
1:1[일대일] 주 테이블에 외래키 단방향 1:1 관계는 그 반대도 1:1 관계이다. 1:1 관계는 주 테이블이나 대상 테이블 중 외래키 선택이 가능하다. 주 테이블에 외래키 대상 테이블에 외래키 DB 입장에서 외래키에 유니크 제약조건을 추가해야 1:1 관계가 성립된다. MEMBER, LOCKER 모두 서로 하나씩만 가질 수 있으며, MEMBER 테이블에 LOCKER_ID를 외래키로 넣고 유니크 제약 조건을 달거나, LOCKER 테이블에 MEMBER_ID를 외래키로 넣고 유니크 제약 조건을 달아도 1:1 관계가 된다. MEMBER 테이블이 주 테이블인 상황이다. @OneToOne @JoinColumn(name = "LOCKER_ID") private Locker locker; 정리 N:1(@ManyToO..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/VpAcc/btrFLBGDvYw/UP9VKTYieV9193YPD5fk7K/img.png)
연관관계 매핑할 때 고려해야 할 세 가지 다중성 JPA에서 나오는 어노테이션은 DB랑 매핑하기 위해 있는 것이기 때문에 DB관점에서 다중성을 기준으로 고민하자. 다대일 : @ManyToOne 실무에서 가장 많이 사용 일대다 : @OneToMany 실무에서 필요할 때 사용 일대일 : @OneToOne 실무에서 가끔 사용 다대다 : @ManyToMany 실무에서 사용을 기피해야 함. 단방향, 양방향 테이블 외래키 하나로 양쪽 조인 가능하기 때문에 사실상 방향이라는 개념이 없다. 객체 참조용 필드가 있는 쪽으로만 참조 가능하기 때문에 한쪽만 참조하면 단방향, 양쪽이 서로 참조하면 양방향이라 한다. 사실 양방향이라는 것도 없다고 해야한다. 객체 입장에서는 서로 참조를 하면 단방향이 두 개가 있는 것임 용어상 쉽..