소개
게시글
질문&답변
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; } @Builder private OrderItem ( Item item , int orderPrice , int count ) { this .item = item ; this .orderPrice = orderPrice ; this .count = count ; } 헌데... 왜 정 적 펙토리 메서드 내 생성자를 넣어서 만드는껄까? 하는 의문이 듭니다. 즉, @Builder private OrderItem ( Item item , int orderPrice , int count ) { this .item = item ; this .orderPrice = orderPrice ; this .count = count ; item . removeStock ( count ); } 이렇게 만들어서 Service에서 바로 사용하면.... 생성자에 비지니스 로직이 들어가는건 좋지 않을것같은 느낌이네요. 혹시 생성자는 생성자대로 존재하고 다양한 비지니스 로직에 따라서 정적 팩토리 메서드들이 저 생성자를 재사용하겠금 하는게 목적일까요? 귀한 주말에 빠른답변 감사드립니다~
- 35
- 8
- 6.8K
질문&답변
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 패턴 추가 @Builder private 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를 도입해보고자 샘플을 만드는데 조금이라도 더 고민하고싶어 과정과 벋어난 질문을 드리는것같아 송구합니다만 인프런에 이런 좋은 강의를 올려주신건 저에겐 행운이네요. 감사합니다.
- 35
- 8
- 6.8K