교육/[온라인] KOSTA EDU

[KOSTA] Kafka를 이용한 서비스와 데이터 통합 - 2편

코드몬스터 2024. 7. 19. 16:08
728x90

 

 

 

 

 

@Entity
@Table(name = "Order_table")
@Data
public class Order {

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

    private String productId;

    private String customId;

    private Integer qty;

    private Integer price;

    private String address;

    private String status;

    @PostPersist
    public void onPostPersist() {
        OrderPlaced orderPlaced = new OrderPlaced(this);
        orderPlaced.publishAfterCommit();

        OrderCancel orderCancel = new OrderCancel(this);
        orderCancel.publishAfterCommit();
    }

    public static OrderRepository repository() {
        OrderRepository orderRepository = OrderApplication.applicationContext.getBean(
            OrderRepository.class
        );
        return orderRepository;
    }

    //<<< Clean Arch / Port Method
    public static void sendMail(InventoryIncrease inventoryIncrease) {
        //implement business logic here:

        /** Example 1:  new item 
        Order order = new Order();
        repository().save(order);

        */

        /** Example 2:  finding and process
        
        repository().findById(inventoryIncrease.get???()).ifPresent(order->{
            
            order // do something
            repository().save(order);


         });
        */

    }
}