게시글
질문&답변
2019.11.09
생성 메서드 setter 질문
추가정적 팩토리 메서드라는 패턴이 있는것을 알게되어 이해하게 되었습니다.JPA뿐만 아니라 여러모로 도움이 되는 명강의 입니다. =================================================================== 말씀하신대로 OrderItem에 적용해보았습니다. public static OrderItem createOrderItem(Item item, int orderPrice, int count) { OrderItem orderItem = OrderItem.builder() .item(item) .orderPrice(orderPrice) .count(count) .build(); item.removeStock(count); return orderItem;}@Builderprivate OrderItem(Item item, int orderPrice, int count) { this.item = item; this.orderPrice = orderPrice; this.count = count;} 헌데... 왜 정적 펙토리 메서드 내 생성자를 넣어서 만드는껄까? 하는 의문이 듭니다. 즉, @Builderprivate OrderItem(Item item, int orderPrice, int count) { this.item = item; this.orderPrice = orderPrice; this.count = count; item.removeStock(count);} 이렇게 만들어서 Service에서 바로 사용하면.... 생성자에 비지니스 로직이 들어가는건 좋지 않을것같은 느낌이네요. 혹시 생성자는 생성자대로 존재하고다양한 비지니스 로직에 따라서 정적 팩토리 메서드들이 저 생성자를 재사용하겠금 하는게목적일까요? 귀한 주말에 빠른답변 감사드립니다~
- 38
- 8
- 7.6K
질문&답변
2019.11.09
생성 메서드 setter 질문
제가 이해하는게 맞는지 확인차 추가 문의드립니다. 예제중에서 public static OrderItem createOrderItem(Item item, int orderPrice, int count) { OrderItem orderItem = new OrderItem(); orderItem.setItem(item); orderItem.setOrderPrice(orderPrice); orderItem.setCount(count); item.removeStock(count); return orderItem;} 위 예제는 정적 팩토리 메서드이고 Entity를 생성하는 방식이 다양하다면 쓰는방식? 아래는 생성자를 통한 생성 private OrderItem(Item item, int orderPrice, int count) { this.item = item; this.orderPrice = orderPrice; this.count = count; item.removeStock(count);} 아래는 생성자 Builder 패턴 추가 @Builderprivate OrderItem(Item item, int orderPrice, int count) { this.item = item; this.orderPrice = orderPrice; this.count = count; item.removeStock(count);} 라고 이해는게 맞을까요? 또한 Entity에 비지니스 로직이 들어가는게 상당히 이점이 있구나 생각이 들면서 Set자체가 있으면 안된다는 강박관념이 공부하다가 생겨서 김영한님의 예제를 볼때상당히 혼란스러웠습니다. 답변을 주신것을 기반으로 생각할때 Entity에서는 @Setter는 쓰지않는다단, 변경메서드를 만들어서 의미를 부여한다.즉, 아래와 같은식으로 한다. public static OrderItem createOrderItem2(Item item, int orderPrice, int count) { OrderItem orderItem = new OrderItem(); orderItem.mappingItem(item); orderItem.mappingOrderPrice(orderPrice); orderItem.mappingCount(count); item.removeStock(count); return orderItem;} 하지만 mappingItem 과 같이 의미가 없다면... @Setter Lombok은 쓰지않지만Entity 내 setter 메서드를 필요에 따라 만든는것은 실무에서는 사용된다? 라고 판단해도 좋을까요? 회사내 Boot와 JPA를 도입해보고자 샘플을 만드는데 조금이라도 더 고민하고싶어과정과 벋어난 질문을 드리는것같아 송구합니다만인프런에 이런 좋은 강의를 올려주신건 저에겐 행운이네요. 감사합니다.
- 38
- 8
- 7.6K