jpashop : create entity
This commit is contained in:
@@ -24,7 +24,7 @@ dependencies {
|
||||
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
|
||||
implementation 'org.springframework.boot:spring-boot-starter-web'
|
||||
implementation 'org.springframework.boot:spring-boot-devtools'
|
||||
|
||||
|
||||
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.6'
|
||||
|
||||
compileOnly 'org.projectlombok:lombok'
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
package com.example.jpashop;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.Id;
|
||||
|
||||
@Entity
|
||||
@Getter @Setter
|
||||
public class Member {
|
||||
|
||||
@Id @GeneratedValue
|
||||
private Long id;
|
||||
private String username;
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
package com.example.jpashop;
|
||||
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import javax.persistence.EntityManager;
|
||||
import javax.persistence.PersistenceContext;
|
||||
|
||||
@Repository
|
||||
public class MemberRepository {
|
||||
|
||||
@PersistenceContext
|
||||
private EntityManager em;
|
||||
|
||||
public Long save(Member member) {
|
||||
em.persist(member);
|
||||
return member.getId();
|
||||
}
|
||||
|
||||
public Member find(Long id) {
|
||||
return em.find(Member.class, id);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.example.jpashop.domain;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
import javax.persistence.Embeddable;
|
||||
|
||||
@Embeddable
|
||||
@Getter
|
||||
public class Address {
|
||||
|
||||
private String city;
|
||||
private String street;
|
||||
private String zipcode;
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.example.jpashop.domain;
|
||||
|
||||
import com.example.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
|
||||
@JoinColumn(name = "parent_id")
|
||||
private Category parent;
|
||||
|
||||
@OneToMany(mappedBy = "parent")
|
||||
private List<Category> child = new ArrayList<>();
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.example.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")
|
||||
private Order order;
|
||||
|
||||
@Embedded
|
||||
private Address address;
|
||||
|
||||
@Enumerated(EnumType.STRING)
|
||||
private DeliveryStatus status; // READY, COMP
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.example.jpashop.domain;
|
||||
|
||||
public enum DeliveryStatus {
|
||||
READY, COMP
|
||||
}
|
||||
25
jpashop/src/main/java/com/example/jpashop/domain/Member.java
Normal file
25
jpashop/src/main/java/com/example/jpashop/domain/Member.java
Normal file
@@ -0,0 +1,25 @@
|
||||
package com.example.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> order = new ArrayList<>();
|
||||
}
|
||||
35
jpashop/src/main/java/com/example/jpashop/domain/Order.java
Normal file
35
jpashop/src/main/java/com/example/jpashop/domain/Order.java
Normal file
@@ -0,0 +1,35 @@
|
||||
package com.example.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
|
||||
@JoinColumn(name = "member_id")
|
||||
private Member member;
|
||||
|
||||
@OneToMany(mappedBy = "order")
|
||||
private List<OrderItem> orderItems = new ArrayList<>();
|
||||
|
||||
@OneToOne
|
||||
@JoinColumn(name = "delivery_id")
|
||||
private Delivery delivery;
|
||||
|
||||
private LocalDateTime orderDate; // 주문 시간
|
||||
|
||||
@Enumerated(EnumType.STRING)
|
||||
private OrderStatus status; // 주문 상태 [ORDER, CANCEL]
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package com.example.jpashop.domain;
|
||||
|
||||
import com.example.jpashop.domain.item.Item;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
@Entity
|
||||
@Getter @Setter
|
||||
public class OrderItem {
|
||||
|
||||
@Id @GeneratedValue
|
||||
@Column(name = "order_item_id")
|
||||
private Long id;
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "item_id")
|
||||
private Item item;
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "order_id")
|
||||
private Order order;
|
||||
|
||||
private int orderPrice; // 주문가격
|
||||
private int count; // 주문 수량
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.example.jpashop.domain;
|
||||
|
||||
public enum OrderStatus {
|
||||
ORDER, CANCEL
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.example.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;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.example.jpashop.domain.item;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import javax.persistence.DiscriminatorValue;
|
||||
import javax.persistence.Entity;
|
||||
|
||||
@Entity
|
||||
@DiscriminatorValue("B")
|
||||
@Getter @Setter
|
||||
public class Book extends Item{
|
||||
|
||||
private String author;
|
||||
private String isbn;
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package com.example.jpashop.domain.item;
|
||||
|
||||
import com.example.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<>();
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.example.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,38 +0,0 @@
|
||||
package com.example.jpashop;
|
||||
|
||||
import org.assertj.core.api.Assertions;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.annotation.Rollback;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest
|
||||
public class MemberRepositoryTest {
|
||||
|
||||
@Autowired MemberRepository memberRepository;
|
||||
|
||||
@Test
|
||||
@Transactional
|
||||
@Rollback(value = false)
|
||||
public void testMember() throws Exception {
|
||||
//given
|
||||
Member member = new Member();
|
||||
member.setUsername("memberA");
|
||||
|
||||
//when
|
||||
Long saveId = memberRepository.save(member);
|
||||
Member findMember = memberRepository.find(saveId);
|
||||
|
||||
//then
|
||||
Assertions.assertThat(findMember.getId()).isEqualTo(member.getId());
|
||||
Assertions.assertThat(findMember.getUsername()).isEqualTo(member.getUsername());
|
||||
Assertions.assertThat(findMember).isEqualTo(member);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user