고객서비스의 구현 - TheOpenCloudEngine/uEngine-cloud GitHub Wiki
고객정보 서비스는 앞서 주문/재고 서비스를 신청하는 고객에 대한 정보를 저장하고 상품 구매시 포인트가 쌓이도록 포인트 정보를 관리할 수 있어야 한다.
@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;
}
}
public interface CustomerRepository extends PagingAndSortingRepository<Customer, Long> {
List<Customer> findByLastName(String lastName);
}
주문 엔티티인 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;
}
}
- 고객을 등록한다:
$ 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"
}
생성된 고객 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
}
주문건에 대한 URI 는 "http://localhost:8080/orders/2"로 발행되었고, 이후 배송상태 등을 조회할 때 이 주소를 통하여 추적 / 조회할 수 있다.
- Next: 마이크로 서비스의 분리