Skip to content

Commit

Permalink
엔티티 클래스 개발
Browse files Browse the repository at this point in the history
  • Loading branch information
kiteB committed Oct 24, 2021
1 parent 95a1b82 commit 581a514
Show file tree
Hide file tree
Showing 15 changed files with 275 additions and 19 deletions.
17 changes: 0 additions & 17 deletions jpashop2/src/main/java/jpabook/jpashop/Member.java

This file was deleted.

@@ -1,5 +1,6 @@
package jpabook.jpashop;

import jpabook.jpashop.domain.Member;
import org.springframework.stereotype.Repository;

import javax.persistence.EntityManager;
Expand Down
23 changes: 23 additions & 0 deletions jpashop2/src/main/java/jpabook/jpashop/domain/Address.java
@@ -0,0 +1,23 @@
package jpabook.jpashop.domain;

import lombok.Getter;

import javax.persistence.Embeddable;

@Embeddable
@Getter
public class Address {

private String city;
private String street;
private String zipcode;

protected Address() {
}

public Address(String city, String street, String zipcode) {
this.city = city;
this.street = street;
this.zipcode = zipcode;
}
}
38 changes: 38 additions & 0 deletions jpashop2/src/main/java/jpabook/jpashop/domain/Category.java
@@ -0,0 +1,38 @@
package jpabook.jpashop.domain;

import jpabook.jpashop.domain.item.Item;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;

@Entity
@Getter @Setter
public class Category {

@Id @GeneratedValue
@Column(name = "category_id")
private Long id;

private String name;

@ManyToMany
@JoinTable(name = "category_item",
joinColumns = @JoinColumn(name = "category_id"),
inverseJoinColumns = @JoinColumn(name = "item_id"))
private List<Item> items = new ArrayList<>();

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "parent_id")
private Category parent;

@OneToMany(mappedBy = "parent")
private List<Category> child = new ArrayList<>();

//==연관관계 메서드==//
public void addChildCategory(Category child) {
this.child.add(child);
child.setParent(this);
}
}
24 changes: 24 additions & 0 deletions jpashop2/src/main/java/jpabook/jpashop/domain/Delivery.java
@@ -0,0 +1,24 @@
package jpabook.jpashop.domain;

import lombok.Getter;
import lombok.Setter;

import javax.persistence.*;

@Entity
@Getter @Setter
public class Delivery {

@Id @GeneratedValue
@Column(name = "delivery_id")
private Long id;

@OneToOne(mappedBy = "delivery", fetch = FetchType.LAZY)
private Order order;

@Embedded
private Address address;

@Enumerated(EnumType.STRING)
private DeliveryStatus status; //ENUM [READY(준비), COMP(배송)]
}
@@ -0,0 +1,5 @@
package jpabook.jpashop.domain;

public enum DeliveryStatus {
READY, COMP
}
25 changes: 25 additions & 0 deletions jpashop2/src/main/java/jpabook/jpashop/domain/Member.java
@@ -0,0 +1,25 @@
package jpabook.jpashop.domain;

import lombok.Getter;
import lombok.Setter;

import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;

@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<>();
}
51 changes: 51 additions & 0 deletions jpashop2/src/main/java/jpabook/jpashop/domain/Order.java
@@ -0,0 +1,51 @@
package jpabook.jpashop.domain;

import lombok.Getter;
import lombok.Setter;

import javax.persistence.*;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

@Entity
@Table(name = "orders")
@Getter @Setter
public class Order {

@Id @GeneratedValue
@Column(name = "order_id")
private Long id;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "member_id")
private Member member; //주문 회원

@OneToMany(mappedBy = "order", cascade = CascadeType.ALL)
private List<OrderItem> orderItems = new ArrayList<>();

@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "delivery_id")
private Delivery delivery; //배송정보

private LocalDateTime orderDate; //주문시간

@Enumerated(EnumType.STRING)
private OrderStatus status; //주문상태 [ORDER, CANCEL]

//==연관관계 메서드==//
public void setMember(Member member) {
this.member = member;
member.getOrders().add(this);
}

public void addOrderItem(OrderItem orderItem) {
orderItems.add(orderItem);
orderItem.setOrder(this);
}

public void setDelivery(Delivery delivery) {
this.delivery = delivery;
delivery.setOrder(this);
}
}
28 changes: 28 additions & 0 deletions jpashop2/src/main/java/jpabook/jpashop/domain/OrderItem.java
@@ -0,0 +1,28 @@
package jpabook.jpashop.domain;

import jpabook.jpashop.domain.item.Item;
import lombok.Getter;
import lombok.Setter;

import javax.persistence.*;

@Entity
@Table(name = "order_item")
@Getter @Setter
public class OrderItem {

@Id @GeneratedValue
@Column(name = "order_item_id")
private Long id;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "item_id")
private Item item; //주문 상품

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "order_id")
private Order order; //주문

private int orderPrice; //주문 가격
private int count; //주문 수량
}
@@ -0,0 +1,5 @@
package jpabook.jpashop.domain;

public enum OrderStatus {
ORDER, CANCEL
}
16 changes: 16 additions & 0 deletions jpashop2/src/main/java/jpabook/jpashop/domain/item/Album.java
@@ -0,0 +1,16 @@
package jpabook.jpashop.domain.item;

import lombok.Getter;
import lombok.Setter;

import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;

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

private String artist;
private String etc;
}
15 changes: 15 additions & 0 deletions jpashop2/src/main/java/jpabook/jpashop/domain/item/Book.java
@@ -0,0 +1,15 @@
package jpabook.jpashop.domain.item;

import lombok.Getter;
import lombok.Setter;

import javax.persistence.*;

@Entity
@DiscriminatorValue("B")
@Getter @Setter
public class Book extends Item {

private String author;
private String isbn;
}
27 changes: 27 additions & 0 deletions jpashop2/src/main/java/jpabook/jpashop/domain/item/Item.java
@@ -0,0 +1,27 @@
package jpabook.jpashop.domain.item;

import jpabook.jpashop.domain.Category;
import lombok.Getter;
import lombok.Setter;

import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;

@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 int stockQuantity;

@ManyToMany(mappedBy = "items")
private List<Category> categories = new ArrayList<Category>();
}
16 changes: 16 additions & 0 deletions jpashop2/src/main/java/jpabook/jpashop/domain/item/Movie.java
@@ -0,0 +1,16 @@
package jpabook.jpashop.domain.item;

import lombok.Getter;
import lombok.Setter;

import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;

@Entity
@DiscriminatorValue("M")
@Getter @Setter
public class Movie extends Item {

private String director;
private String actor;
}
@@ -1,5 +1,6 @@
package jpabook.jpashop;

import jpabook.jpashop.domain.Member;
import org.assertj.core.api.Assertions;
import org.junit.Test;
import org.junit.runner.RunWith;
Expand All @@ -10,8 +11,6 @@

import javax.transaction.Transactional;

import static org.junit.Assert.*;

@RunWith(SpringRunner.class)
@SpringBootTest
public class MemberRepositoryTest {
Expand Down

0 comments on commit 581a514

Please sign in to comment.