1. Order, Item Service 구성 - TheOpenCloudEngine/uEngine-cloud GitHub Wiki
Order, Item Service 구성
Application 생성과 사용에서 확인 할 수 있습니다.
기본적인 Application 생성법은Application 생성
- Metawork4 기반의 Application을 생성하여 줍니다.
(해당 예제에서는 ex-order 라는 이름으로 작성하였습니다.)
패키지 구성
src
+- main
+- java
+- org
+- uengine
+- msa
Application.java
WebConfig.java
...
pom.xml
엔티티 클래스 설계
- 생성된 프로젝트의 Application.java 가 포함된 동일한 패키지내에 다음의 클래스들을 생성합니다:
/* Order.java */
@Entity
@Table(name="order_table")
public class Order {
@Id @GeneratedValue
Long id;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@ManyToOne @JoinColumn(name = "itemId")
Item item;
public Item getItem() {
return item;
}
public void setItem(Item item) {
this.item = item;
}
int qty;
public int getQty() {
return qty;
}
public void setQty(int qty) {
this.qty = qty;
}
}
/* Item.java */
@Entity
public class Item {
@Id
String item;
public String getItem() {
return item;
}
public void setItem(String item) {
this.item = item;
}
int stock;
public int getStock() {
return stock;
}
public void setStock(int stock) {
this.stock = stock;
}
int point;
public int getPoint() {
return point;
}
public void setPoint(int point) {
this.point = point;
}
}
여기서 사용된 JPA 애노테이션을 소개하면,
- @Entity: 해당 클래스가 엔티티 클래스임을 표시한다.
- @Id: 해당 프로퍼티가 Primary Key임을 표시한다.
- @ManyToOne: 해당 프로퍼티 클래스와 본 엔티티는 n:1 관계임을 표시한다. 이 경우는 하나의 Item 에 대하여 여러 주문건이 발생할 수 있으므로 Order 입장에서 ManyToOne 이 옳은 설정이다.
- @JoinColumn: 연결되는 조인 컬럼 ID 를 Database Level 에서 사용할 컬럼명(name)을 지정해준다.
- 더 상세한 JPA 애노테이션에 대한 명세는 metaworks4.io를 참고한다.
- 레파지토리 위와 같은 두개의 엔티티 도메인 클래스를 만든 후, 대응하는 Repository 2개를 동일한 패키지 내에 만들어줍니다:
/* OrderRepository.java */
public interface OrderRepository extends PagingAndSortingRepository<Order, Long>{
}
/* ItemRepository.java */
public interface ItemRepository extends PagingAndSortingRepository<Item, String>{
}