1. Customer Service 구성 - TheOpenCloudEngine/uEngine-cloud GitHub Wiki

Customer Service 구성

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

Application 생성

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

고객서비스의 구현

고객정보 서비스는 앞서 주문/재고 서비스를 신청하는 고객에 대한 정보를 저장하고 상품 구매시 포인트가 쌓이도록 포인트 정보를 관리할 수 있어야 한다.

고객 서비스 도메인 클래스 정의

/* Customer.java */

@Entity
public class Customer {

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Long id;
    private String firstName;
    private String lastName;

    protected Customer() {}

    public Customer(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

	public Long getId() {
		return id;
	}

	public String getFirstName() {
		return firstName;
	}

	public String getLastName() {
		return lastName;
	}
}

고객 서비스 Repository 정의

/* CustomerRepository.java */
public interface CustomerRepository extends PagingAndSortingRepository<Customer, Long> {

    List<Customer> findByLastName(String lastName);
}

주문 엔티티와 Relation 연결

주문 엔티티인 Order.java 에 customer 를 하위 멤버 필드로 생성하고 @ManyToOne annotation 을 준다. 이때 DB상에 연결 foreign key 로 사용될 customerId 를 @JoinColumn annotation으로 선언해준다.

public class Order {

...
    @ManyToOne  @JoinColumn(name="customerId")
    Customer customer;
        public Customer getCustomer() {
            return customer;
        }
        public void setCustomer(Customer customer) {
            this.customer = customer;
        }
}

테스트

  1. 고객을 등록한다:
$ http localhost:8080/customers firstName="jinyoung" lastName="jang" point=0

{
    "_links": {
        "customer": {
            "href": "http://localhost:8080/customers/2"
        }, 
        "self": {
            "href": "http://localhost:8080/customers/2"
        }
    }, 
    "firstName": "jinyoung", 
    "lastName": "jang"
}
  1. 생성된 고객 URI 인 "href": "http://localhost:8080/customers/2" (links > self 에서 찾으면 된다) 를 파라미터 값으로 하여 주문을 등록한다:
  • 해당 고객으로 TV 5대를 주문을 한다:
$ http localhost:8080/orders customer="http://localhost:8080/customers/2" item="http://localhost:8080/items/TV" qty=5
{
    "_links": {
        "customer": {
            "href": "http://localhost:8080/orders/2/customer"
        }, 
        "item": {
            "href": "http://localhost:8080/orders/2/item"
        }, 
        "order": {
            "href": "http://localhost:8080/orders/2"
        }, 
        "self": {
            "href": "http://localhost:8080/orders/2"
        }
    }, 
    "qty": 5
}
  1. 주문건에 대한 URI 는 "http://localhost:8080/orders/2"로 발행되었고, 이후 배송상태 등을 조회할 때 이 주소를 통하여 추적 / 조회할 수 있다.
⚠️ **GitHub.com Fallback** ⚠️