목록BE/JPA (112)
오봉이와 함께하는 개발 블로그
프록시 @Entity @Getter @Setter public class Member extends BaseEntity{ @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; @Column(name = "USERNAME") private String name; @ManyToOne @JoinColumn(name = "TEAM_ID") private Team team; } Member에 대한 정보만 필요할 때, Member와 Team 모두 필요할 때가 있을텐데, Member를 조회할 때 무조건 Team도 같이 조회가 되면 불필요한 쿼리가 생겨 성능상 큰 문제는 아닐지언정 좋지는 않을 것이다. 어떻게 하면 Member만 조회할 수 있을까? 프록시 ..
요구사항 추가 이전 작업 사항은 아래를 참조하자. https://5bong2-develop.tistory.com/230 Item 단독으로 저장될 일은 없다. 상품의 종류는 음반, 도서, 영화가 있고 이후 더 확장될 수 있음. 모든 데이터는 등록일과 수정일이 필수. 모델 코드 enum class와 Item을 상속 받는 클래스를 제외한 모든 클래스에 BaseEntity를 상속 받게 해줌. @MappedSuperclass @Getter @Setter public abstract class BaseEntity { private String createdBy; private LocalDateTime createdDate; private String lastModifiedBy; private LocalDateTim..
@MappedSuperclass 상속관계 매핑과는 관련이 별로 없고, 엔티티와 테이블과의 매핑과도 마찬가지다. 부모 클래스를 상속 받는 자식 클래스에만 매핑 정보가 제공되기 때문에 객체의 입장에서 같은 이름의 컬럼을 가진 변수가 있을 때 부모 클래스에 두고 속성만 상속받아 사용하고 싶을 때 사용한다. 조회, 검색이 불가능하기 때문에 직접 생성해서 사용할 일이 없어서 추상 클래스로 사용하는 것을 권장한다.(em.find(BaseEntity) 불가능) 즉, 공통 매핑 정보가 필요할 때 사용한다.(id, name) 사용 private String createdBy; private LocalDateTime createdDate; private String lastModifiedBy; private LocalDa..
상속관계 매핑 관계형 데이터베이스는 상속 관계라는 것이 없다. 관계형 DB에는 슈퍼타입, 서브타입 관계라는 모델링 기법이 객체 상속과 유사하다. 상속관계 매핑 : 객체의 상속 구조와 DB의 슈퍼타입 서브타입 관계를 매핑 상속관계 매핑 방법 슈퍼타입, 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법 각각 테이블로 변환 -> 조인 전략 통합 테이블로 변환 -> 단일 테이블 전략 서브타입 테이블로 변환 -> 구현 클래스마다 테이블 전략 어노테이션 @Inheritance(strategy=InheritanceType.XXX) JOINED : 조인 전략 SINGLE_TABLE : 단일 테이블 전략 TABLE_PER_CLASS : 구현 클래스마다 테이블 전략 @DiscriminatorColumn(name="DT..
다양한 연관관계 매핑 주문과 배송은 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..