inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

강의 내용중 궁금한 점 질문드립니다.

141

whdk333

작성한 질문수 31

0

//==생성 메서드==//
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;
}

이러한 생성메서드는 언제 사용하는건가요?
코드를 분석해보니 연관관계에서 다 대 1인 케이스에서, '다'쪽에서 생성 메서드를 사용하는 것 같은데 맞나요?

감사합니다.

강의 김영한강사님 스프링 spring 생성메서드 질문

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

whdk333님, 질문하신 생성 메서드 사용 상황에 대해 답변드립니다.

주로 생성 메서드는 도메인 모델에서 객체를 생성할 때 초기화 로직이 복잡하거나, 여러 단계의 설정이 필요할 때 사용합니다. 특정 클래스의 인스턴스를 생성하고 초기화하는 과정을 캡슐화하여, 사용하는 측면에서는 객체 생성 시 필요한 세부 구현을 몰라도 되는 편리함을 제공합니다. 보통은 이런 팩토리 메서드 패턴이나 빌더 패턴과 유사한 방식으로 적용됩니다.

whdk333님이 말씀하신대로, 연관관계가 있는 경우, 특히 ‘다’쪽에서 ‘1’쪽의 객체와의 관계를 설정하며 생성하는 경우에 이러한 생성 메서드를 효과적으로 사용할 수 있습니다. 이러한 방법은 객체간의 관계를 명확하게 설정할 수 있도록 도와줍니다. 즉, 연관관계를 설정할 때 초기화 로직이 복잡하거나, 기본 생성자만 사용하여 객체를 만든 후 필드를 설정하는 것보다 객체의 일관성과 안전성을 보장할 수 있습니다.

따라서, 제시해주신 코드에서도 OrderItem 객체를 안전하게 생성하면서, 관련된 Item 객체의 상태도 함께 업데이트(재고 감소)하는 등의 작업을 수행하고 있어, 이러한 생성 메서드의 효율적인 사용 사례로 볼 수 있습니다.

감사합니다.

트랙잭션 격리수준 선택에 대해서 질문

0

17

1

안녕하세요 치킨 디도스 이벤트 보고 흉내내보려 들어왔습니다..

0

26

2

실무 내용 문의드려요

0

27

2

SingletonService가 JVM이 뜰 때 생성되는게 맞나요?

0

61

2

임포트 오류

0

38

2

답을언제쯤받아볼수있나요

0

54

2

형 책 어떻게 받아?

1

60

1

@JsonIgnore 이후 Internal Server Error가 발생하지 않습니다.

0

33

2

mvc 패턴 - 적용 강의에서 회원가입할 때 redirect가 아닌 forward인 이유가 궁금합니다.

0

30

1

프로젝트가 없어요..

0

60

2

JpaCursorItemReader의 정렬 조건 부재의 영향

1

47

2

changeTeam 메서드 질문

0

35

1

"컴파일 시점에 없는 값을 어떻게 참조할 것인가?" 섹션

1

54

2

테스트 관련 질문!

0

57

2

handleBindException 의 기대의도가 방향이 맞는지 궁금합니다.

0

43

2

SpringBoot 4.0.6 버전에서 PackageLogTracePostProcessor exception

0

89

3

인텔리제이 오류

0

53

1

프로젝트 의존 관계

0

53

2

application.properties가 적용되지 않아요

1

74

3

새 프로젝트 속 제너레이터에 SpringBoot가 없습니다.

0

55

2

섹션3. 11 회원객체 다이어그램

0

37

1

OCP, DIP과 @Qualifier 어노테이션에 대해서 질문합니다.

0

37

1

강의 연장 요청

0

49

2

설정 정보 없이 임베디드 데이터베이스 생성

0

41

1