(JPA) 엔티티 클래스 개발 관련 이미지

(JPA) 엔티티 클래스 개발

JPA로 프로젝트를 해본적이 없어서 다음 수업을 들으면서 배운 내용을 정리하고 싶어요

더 배우거나 배우면서 더 많은 정보를 추가하는 대로 계속 업데이트하겠습니다.

관행!Spring Boot 및 JPA1 사용 – 웹 애플리케이션 개발 – 인프라 | 프레젠테이션

실용적인 예로 Spring Boot 및 JPA를 사용하여 웹 애플리케이션을 설계하고 개발합니다. 이 과정을 통해 Spring Boot와 JPA를 실제로 사용하는 방법을 배울 수 있습니다.

www.inflearn.com

도메인 모델 및 테이블 설계

엔티티 클래스 개발 관련 대표 이미지엔티티 클래스 개발 관련 이미지

아래 디자인에서 볼 수 있습니다.

1) 회원은 여러 상품을 주문할 수 있습니다.

2) 하나의 주문으로 여러 상품을 선택할 수 있습니다.

3) 제품은 공통 속성을 사용하기 때문에 상속 구조를 갖는다.

엔티티 개발

– 실제로 세터 주석은 피해야 합니다!

@Entity
@Getter@Setter
public Class Member{
	
    @Id @GeneratedValue
    @Column(name="member_id")
    private Long id;
    
    private String name;
    
    @Embedded
    private Address address;
    
    @OneToMany(mappedBy = "member")
    private List<Order> orders = new ArrayList<>();
}
@Entity
@Table(name = "orders")
@Getter @Setter
public class Order{
	
    @Id @GeneratedValue
    @Column(name = "order_id")
    private Long id;
    
    @ManyToOne(fetch = LAZY)
    @JoinColumn(name = "member_id")
    private Member member; // 연관관계의 주인
    
    @OneToMany(mappedBy = "order")
    private List<OrderItem> orderItems = new ArrayList<>();
    
    @OneToOne(fetch = LAZY)
    @JoinColumn(name = "delivery_id")
    private Delivery delivery;
    
    private LocalDateTime orderDate;
    
    @Enumerated(EnumType.STRING)
    private OrderStatus orderStatus;
}
@Embeddable
@Getter
public class Address{

    private String city;
    private String street;
    private String zipcode;
}
@Entity
@Getter @Setter
public class Delivery{

    @Id @GeneratedValue
    @Column(name = "delivery_id")
    private Long id;
    
    @OneToOne(fetch = LAZY, mappedBy = "delivery")
    private Order order;
    
    @Embedded
    private Address address;
    
    @Enumerated(EnumType.STRING)
    private DeliveryStatus status;

}
@Entity
@Getter @Setter
public class OrderItem{

    @Id @GeneratedValue
    @Column(name = "order_item_id")
    private Long id;
    
    @ManyToOne(fetch = LAZY)
    @JoinColumn(name = "item_id")
    private Item item;
    
    @ManyToOne(fetch = LAZY)
    @JoinColumn(name = "order_id")
    private Order order;
    
    private int orderPrice;
    
    private int count;
}
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DisCriminatorColumn(name = "dtype")
@Getter @Setter
public abstract class Item{
	
    @Id @GeneratedValue
    @Column(name = "item_id")
    private Long id;
    
    private String name;
    
    private int price;
    
    private String stockQuantity;
    
    @ManyToMany
    private List<Category> categories = new ArrayList<>();
    

}
@Entity
@DiscriminatorValue("A")
@Getter @Setter
public class Album extends Item{

    private String artist;
    private String etc;
}
@Entity
@DiscriminatorValue("B")
@Getter @Setter
public class Book extends Item{
	
    private String author;
    private String isbn;
}
@Entity
@DiscriminatorValue("M")
@Getter @Setter
public class Movie{
	
    private String director;
    private String actor;
	
}
@Entity
@Getter @Setter
public class Category{
    @Id @GeneratedValue
    @Column(name = "category_id")
    private Long id;
    
    private String name;
    
    @ManyToMany(fetch = LAZY)
    @JoinTable(name = "category_item",
    	joinColumns = @JoinColumn(name = "category_id"),
        inverseJoinColumns = @JoinColumn(name = "item_id")
    private List<Item> items = new ArrayList<>();
    
    @ManyToOne(fetch = LAZY)
    @JoinColumn(name = "parent_id")
    private Category parent;
    
    @OneToMany(mappedBy = "parent")
    private List<Category> child = new ArrayList<>();
}

Similar Posts

  • 라마다 바이 윈덤 마운틴

    군산 라마다호텔주소: 전북 군산시 대학로 400 호텔로 아침 출발슈촨 전문시장 및 창샹 스카이워크 방문 후제 시간에 1년전쯤 군산 라마다에 왔습니다그때는 괜찮다고 생각해서 돌아왔어 2시 50분쯤 도착했는데 주차공간이 넉넉했어요. 주차장에서 엘리베이터를 타고 1층으로 바로 이동합니다. 전에는 사람이 없었기 때문인가요?그들은 심지어 일찍 체크인 자, 3시부터 체크인, 실속 없이당신의 이름을 부르면 와요 나는 3시에 체크인한다.나는 내가 도시 풍경을…

  • 림프마사지 온열 진동안마기 핫써클 림파스틱 리뷰

    림프마사지 핫서클 림퍼스틱 온열진동 마사지기 추천 저는 개인적으로 마사지를 좋아해요.가끔은 마사지샵에서 커플마사지를 받기도 하지만 셀프마사지를 하는것도 좋아합니다. 발 마사지기나 안마기를 사용해서 근육을 풀어주는 거예요. 림프마사지 온열 진동안마기 핫써클 림파스틱 리뷰 그래서 오늘은 하루 5분 셀프 마사지로 머리부터 발끝까지 간편하게 온몸 구석구석을 따뜻한 온열로 찜질할 수 있는 만능 안마기를 직접 사용해 본 소감을 전해드리도록 하겠습니다.림프스틱 온열…

  • 개가 떨리는 이유 요약(fest. 대처 방법)

    나는 개가 떨리는 원인을 요약하려고 노력할 것입니다. 강아지가 갑자기 왜 흔들리는지 모르겠고, 답답하신 분들이 많으실 것 같아요. 강아지도 사람처럼 추위에 떨 때가 있지만 경우에 따라 문제가 생각보다 심각할 수 있습니다. 사랑하는 반려견과 행복한 반려생활을 하기 위해 주인이 알아야 할 기본적인 상식을 알아봅시다. 개가 흔들리는 원인은 무엇입니까? 체온 유지 개가 떨리는 이유 – 체온 유지 강아지는…

  • 밤의 효능 부작용을 조사합시다.

    오늘은 밤의 효능을 전해드립니다.밤에는 맛도 좋지만 건강에도 많은 도움이 되는 음식으로 알려져 있지만 밤나무는 한자로 밤이라고 합니다.밤나무는 밤과 밤이 늘어선 상태를 형상화하여 만든 한자로 시작한 것으로, 밤나무에는 매우 많은 밤이 피고, 밤도 밤의 수만 할 수 있습니다. . 또, 그릇을 키워 줘서 길이를 든든하게 해, 배가 비지 않도록 한다고 쓰여져 있습니다. 밤의 효능 10종류와 부작용을…

  • (타이베이) 3. 대만 총통부, 시먼 레드 하우스, 국립 대만 박물관

    Jolly Hotel 조식은 2층에서 제공됩니다. 화려한 호텔 조식만큼 화려하지는 않지만 친절한 직원들이 제공하는 신선한 음식. 오렌지 주스도 갓 짜낸 것입니다. 들어가자마자 “오렌지 주스 마실래?”라고 한국어로 물어봤다. 호텔 앞 거리 같은데 사진을 보니 홍콩인가 한국인가 봐요. 종로구 어느 골목? MRT는 타이페이 주변에 편리하고 시내 버스도 편리합니다. 시내버스를 탈 때는 택시를 부르듯 손을 흔듭니다. 앞으로 또는 뒤로…