1. Order, Item Service 구성 - TheOpenCloudEngine/uEngine-cloud GitHub Wiki

Order, Item Service 구성

기본적인 Application 생성법은 Application 생성과 사용에서 확인 할 수 있습니다.

Application 생성

  1. Metawork4 기반의 Application을 생성하여 줍니다.
    (해당 예제에서는 ex-order 라는 이름으로 작성하였습니다.)

패키지 구성

src
 +- main
  +- java
   +- org
    +- uengine
     +- msa
       Application.java
       WebConfig.java
  ...
pom.xml


엔티티 클래스 설계

  1. 생성된 프로젝트의 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를 참고한다.
  1. 레파지토리 위와 같은 두개의 엔티티 도메인 클래스를 만든 후, 대응하는 Repository 2개를 동일한 패키지 내에 만들어줍니다:
/* OrderRepository.java */

public interface OrderRepository extends PagingAndSortingRepository<Order, Long>{
}

/* ItemRepository.java */

public interface ItemRepository extends PagingAndSortingRepository<Item, String>{
}