-
엔티티 매핑 - 실습 예제를 통한 데이터 중심 설계의 문제점김영한(인프런 강의)/자바 ORM 표준 JPA 프로그래밍 2020. 10. 5. 16:36반응형
요구 사항
1) 회원은 상품을 주문할 수 있다.
2) 주문 시 여러 종류의 상품을 선택할 수 있다.
기능 목록
회원 기능
- 회원등록
- 회원조회
상품 기능
- 상품등록
- 상품수정
- 상품조회
주문 기능
- 상품주문
- 주문내역조회
- 주문취소
도메인 모델 분석
1) 회원과 주문의 관계
- 회원은 여러 번 주문할 수 있다. (일대다)
2) 주문과 상품의 관계
- 주문할 때 여러 상품을 선택할 수 있다. 반 대로 같은 상품도 여러 번 주문될 수 있다. 주문상품 이라는 모델 을 만들어서 다대다 관계를 일다대, 다대일 관계로 풀어냄
테이블 설계
엔티티 설계와 매핑
데이터 중심 설계의 문제점
1) 위의 방식은 객체 설계를 테이블 설계에 맞춘 방식
2) 테이블의 외래키를 객체에 그대로 가져옴
3) 객체 그래프 탐색이 불가능
4) 참조가 없으므로 UML도 잘못됨
코드
public class JpaStudyApplication { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); //트랜잭션 시작 tx.begin(); try { tx.commit(); // [트랜잭션] 커밋 }catch (Exception e) { tx.rollback(); }finally { em.close(); } emf.close(); } }
@Entity public class Member { @Id @GeneratedValue @Column(name="MEMBER_ID") private Long id; private String name; private String city; private String street; private String zipcode; Getter(), Setter() ... }
@Entity @Table(name = "ORDERS") public class Order { @Id @GeneratedValue @Column(name="ORDER_ID") private Long id; @Column(name="MEMBER_ID") private Long memberId; private LocalDateTime orderDate; @Enumerated(EnumType.STRING) private OderStatus status; Getter(), Setter() ... }
public enum OderStatus { ORDER, CANCEL }
@Entity public class Item { @Id @GeneratedValue @Column(name="ITEM_ID") private Long id; private String name; private int price; private int stockQuantity; Getter(), Setter() }
@Entity public class OderItem { @Id @GeneratedValue @Column(name = "ORDER_ITEM_ID") private Long id; @Column(name = "ORDER_ID") private Long orderId; @Column(name = "ITEM_ID") private Long itemId; private int orderPrice; private int count; Getter(), Setter()... }
반응형'김영한(인프런 강의) > 자바 ORM 표준 JPA 프로그래밍' 카테고리의 다른 글
연관관계 매핑 기초 - 양방향 연관관계 (0) 2020.10.07 연관관계 매핑 기초 - 단방향 연관관계 (0) 2020.10.07 엔티티 매핑 - 기본키 매핑 (0) 2020.10.05 엔티티 매핑 - 필드와 컬럼 매핑 (0) 2020.10.02 엔티티 매핑 - 데이터베이스 스키마 자동 생성 (0) 2020.09.29