Merge pull request #8 from Development-team-1/store-service-jpa-design
store-service 엔티티 클래스 설계 및 연관관계 설정
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
package com.justpickup.storeservice.domain.category.entity;
|
||||
|
||||
import com.justpickup.storeservice.domain.item.entity.Item;
|
||||
import com.justpickup.storeservice.domain.store.entity.Store;
|
||||
import com.justpickup.storeservice.global.entity.BaseEntity;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static javax.persistence.FetchType.LAZY;
|
||||
|
||||
@Entity
|
||||
@Table(name = "category")
|
||||
@Getter @NoArgsConstructor(access = AccessLevel.PROTECTED)
|
||||
public class Category extends BaseEntity {
|
||||
|
||||
@Id @GeneratedValue
|
||||
@Column(name = "category_id")
|
||||
private Long id;
|
||||
|
||||
private String name;
|
||||
|
||||
private Integer orders;
|
||||
|
||||
@ManyToOne(fetch = LAZY)
|
||||
@JoinColumn(name = "store_id")
|
||||
private Store store;
|
||||
|
||||
@OneToMany(mappedBy = "category")
|
||||
private List<Item> items;
|
||||
|
||||
// == 연관관계 편의 메소드 == //
|
||||
public void setStore(Store store) {
|
||||
this.store = store;
|
||||
store.getCategories().add(this);
|
||||
}
|
||||
|
||||
public void addItem(Item item) {
|
||||
items.add(item);
|
||||
item.setCategory(this);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.justpickup.storeservice.domain.favoritestore.entity;
|
||||
|
||||
import com.justpickup.storeservice.domain.store.entity.Store;
|
||||
import com.justpickup.storeservice.global.entity.BaseEntity;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
import static javax.persistence.FetchType.LAZY;
|
||||
|
||||
@Entity
|
||||
@Table(name = "favorite_store")
|
||||
@Getter @NoArgsConstructor(access = AccessLevel.PROTECTED)
|
||||
public class FavoriteStore extends BaseEntity {
|
||||
|
||||
@Id @GeneratedValue
|
||||
@Column(name = "favorite_store_id")
|
||||
private Long id;
|
||||
|
||||
//== user-service.user pk ==//
|
||||
private Long userId;
|
||||
|
||||
@ManyToOne(fetch = LAZY)
|
||||
@JoinColumn(name = "store_id")
|
||||
private Store store;
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
package com.justpickup.storeservice.domain.item.entity;
|
||||
|
||||
import com.justpickup.storeservice.domain.category.entity.Category;
|
||||
import com.justpickup.storeservice.domain.itemoption.entity.ItemOption;
|
||||
import com.justpickup.storeservice.domain.store.entity.Store;
|
||||
import com.justpickup.storeservice.global.entity.BaseEntity;
|
||||
import com.justpickup.storeservice.global.entity.Photo;
|
||||
import com.justpickup.storeservice.global.entity.Yn;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static javax.persistence.FetchType.LAZY;
|
||||
|
||||
@Entity
|
||||
@Table(name = "item")
|
||||
@Getter @NoArgsConstructor(access = AccessLevel.PROTECTED)
|
||||
public class Item extends BaseEntity {
|
||||
|
||||
@Id @GeneratedValue
|
||||
@Column(name = "item_id")
|
||||
private Long id;
|
||||
|
||||
private String name;
|
||||
|
||||
@Enumerated(EnumType.STRING)
|
||||
private Yn salesYn;
|
||||
|
||||
private Long price;
|
||||
|
||||
@Embedded
|
||||
private Photo photo;
|
||||
|
||||
@ManyToOne(fetch = LAZY)
|
||||
@JoinColumn(name = "category_id")
|
||||
private Category category;
|
||||
|
||||
@ManyToOne(fetch = LAZY)
|
||||
@JoinColumn(name = "store_id")
|
||||
private Store store;
|
||||
|
||||
@OneToMany(mappedBy = "item")
|
||||
private List<ItemOption> itemOptions;
|
||||
|
||||
// == 연관관계 편의 메소드 ==//
|
||||
public void addItemOption(ItemOption itemOption) {
|
||||
itemOptions.add(itemOption);
|
||||
itemOption.setItem(this);
|
||||
}
|
||||
|
||||
public void setStore(Store store) {
|
||||
this.store = store;
|
||||
store.getItems().add(this);
|
||||
}
|
||||
|
||||
public void setCategory(Category category) {
|
||||
this.category = category;
|
||||
category.getItems().add(this);
|
||||
}
|
||||
|
||||
// == 생성 메소드 == //
|
||||
public static Item createdItem(Category category, Store store, List<ItemOption> itemOptions) {
|
||||
Item item = new Item();
|
||||
item.setCategory(category);
|
||||
item.setStore(store);
|
||||
itemOptions.forEach(item::addItemOption);
|
||||
return item;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package com.justpickup.storeservice.domain.itemoption.entity;
|
||||
|
||||
import com.justpickup.storeservice.domain.item.entity.Item;
|
||||
import com.justpickup.storeservice.global.entity.BaseEntity;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
import static javax.persistence.FetchType.LAZY;
|
||||
|
||||
@Entity
|
||||
@Table(name = "item_option")
|
||||
@Getter @NoArgsConstructor(access = AccessLevel.PROTECTED)
|
||||
public class ItemOption extends BaseEntity {
|
||||
|
||||
@Id @GeneratedValue
|
||||
@Column(name = "item_option_id")
|
||||
private Long id;
|
||||
|
||||
@Enumerated(EnumType.STRING)
|
||||
private OptionType optionType;
|
||||
|
||||
private Long price;
|
||||
|
||||
private String name;
|
||||
|
||||
@ManyToOne(fetch = LAZY)
|
||||
@JoinColumn(name = "item_id")
|
||||
private Item item;
|
||||
|
||||
// == 연관관계 편의 메소드 == //
|
||||
public void setItem(Item item) {
|
||||
this.item = item;
|
||||
item.getItemOptions().add(this);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.justpickup.storeservice.domain.itemoption.entity;
|
||||
|
||||
public enum OptionType {
|
||||
REQUIRED, OTHER
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.justpickup.storeservice.domain.map.entity;
|
||||
|
||||
import com.justpickup.storeservice.global.entity.BaseEntity;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
@Entity
|
||||
@Table(name = "map")
|
||||
@Getter @NoArgsConstructor(access = AccessLevel.PROTECTED)
|
||||
public class Map extends BaseEntity {
|
||||
@Id @GeneratedValue
|
||||
@Column(name = "map_id")
|
||||
private Long id;
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package com.justpickup.storeservice.domain.review.entity;
|
||||
|
||||
import com.justpickup.storeservice.domain.reviewreply.entity.ReviewReply;
|
||||
import com.justpickup.storeservice.domain.store.entity.Store;
|
||||
import com.justpickup.storeservice.global.entity.BaseEntity;
|
||||
import com.justpickup.storeservice.global.entity.Photo;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
import static javax.persistence.FetchType.LAZY;
|
||||
|
||||
@Entity
|
||||
@Table(name = "review")
|
||||
@Getter @NoArgsConstructor(access = AccessLevel.PROTECTED)
|
||||
public class Review extends BaseEntity {
|
||||
|
||||
@Id @GeneratedValue
|
||||
@Column(name = "review_id")
|
||||
private Long id;
|
||||
|
||||
private String content;
|
||||
|
||||
private Integer starRating;
|
||||
|
||||
@Embedded
|
||||
private Photo photo;
|
||||
|
||||
//== user-service.user pk ==//
|
||||
private Long userId;
|
||||
|
||||
//== order-service.order pk ==//
|
||||
private Long orderId;
|
||||
|
||||
@OneToOne(fetch = LAZY)
|
||||
@JoinColumn(name = "review_reply_id")
|
||||
private ReviewReply reviewReply;
|
||||
|
||||
@ManyToOne(fetch = LAZY)
|
||||
@JoinColumn(name = "store_id")
|
||||
private Store store;
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.justpickup.storeservice.domain.reviewreply.entity;
|
||||
|
||||
import com.justpickup.storeservice.global.entity.BaseEntity;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
@Entity
|
||||
@Table(name = "review_reply")
|
||||
@Getter @NoArgsConstructor(access = AccessLevel.PROTECTED)
|
||||
public class ReviewReply extends BaseEntity {
|
||||
|
||||
@Id @GeneratedValue
|
||||
@Column(name = "review_reply_id")
|
||||
private Long id;
|
||||
|
||||
private String content;
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
package com.justpickup.storeservice.domain.store.entity;
|
||||
|
||||
import com.justpickup.storeservice.domain.category.entity.Category;
|
||||
import com.justpickup.storeservice.domain.item.entity.Item;
|
||||
import com.justpickup.storeservice.domain.map.entity.Map;
|
||||
import com.justpickup.storeservice.global.entity.Address;
|
||||
import com.justpickup.storeservice.global.entity.BaseEntity;
|
||||
import com.justpickup.storeservice.global.entity.Photo;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
import static javax.persistence.FetchType.LAZY;
|
||||
|
||||
@Entity
|
||||
@Table(name = "store")
|
||||
@Getter @NoArgsConstructor(access = AccessLevel.PROTECTED)
|
||||
public class Store extends BaseEntity {
|
||||
|
||||
@Id @GeneratedValue
|
||||
@Column(name = "store_id")
|
||||
private Long id;
|
||||
|
||||
private LocalDateTime businessStartTime;
|
||||
|
||||
private LocalDateTime businessEndTime;
|
||||
|
||||
private String phoneNumber;
|
||||
|
||||
@Embedded
|
||||
private Address address;
|
||||
|
||||
@Embedded
|
||||
private Photo photo;
|
||||
|
||||
@OneToOne(fetch = LAZY)
|
||||
@JoinColumn(name = "map_id")
|
||||
private Map map;
|
||||
|
||||
//== user-service.user pk ==//
|
||||
private Long userId;
|
||||
|
||||
@OneToMany(mappedBy = "store")
|
||||
private List<Category> categories;
|
||||
|
||||
@OneToMany(mappedBy = "store")
|
||||
private List<Item> items;
|
||||
|
||||
// == 연관관계 편의 메소드 == //
|
||||
public void addCategory(Category category) {
|
||||
categories.add(category);
|
||||
category.setStore(this);
|
||||
}
|
||||
|
||||
public void addItem(Item item) {
|
||||
items.add(item);
|
||||
item.setStore(this);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.justpickup.storeservice.global.entity;
|
||||
|
||||
import lombok.AccessLevel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.persistence.Embeddable;
|
||||
|
||||
@Embeddable
|
||||
@NoArgsConstructor(access = AccessLevel.PROTECTED)
|
||||
@AllArgsConstructor @Getter
|
||||
public class Address {
|
||||
private String city;
|
||||
private String street;
|
||||
private String zipcode;
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.justpickup.storeservice.global.entity;
|
||||
|
||||
import javax.persistence.MappedSuperclass;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@MappedSuperclass
|
||||
public class BaseEntity {
|
||||
|
||||
private Long createdBy;
|
||||
private LocalDateTime createdAt;
|
||||
private Long lastModifiedBy;
|
||||
private LocalDateTime lastModifiedAt;
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.justpickup.storeservice.global.entity;
|
||||
|
||||
import lombok.AccessLevel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Embeddable;
|
||||
|
||||
@Embeddable
|
||||
@NoArgsConstructor(access = AccessLevel.PROTECTED)
|
||||
@AllArgsConstructor @Getter
|
||||
public class Photo {
|
||||
|
||||
@Column(name = "photo_path")
|
||||
private String path;
|
||||
@Column(name = "photo_name")
|
||||
private String name;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.justpickup.storeservice.global.entity;
|
||||
|
||||
public enum Yn {
|
||||
Y, N
|
||||
}
|
||||
@@ -8,9 +8,10 @@ spring:
|
||||
jpa:
|
||||
hibernate:
|
||||
ddl-auto: create-drop
|
||||
generate-ddl: true
|
||||
show-sql: true
|
||||
properties:
|
||||
hibernate:
|
||||
format_sql: true
|
||||
show_sql: true
|
||||
open-in-view: false
|
||||
default_batch_fetch_size: 1000
|
||||
|
||||
|
||||
Reference in New Issue
Block a user