생성 메서드에 대한 질문있습니다.
217
投稿した質問数 31
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
강의 내용에서 Order 클래스에서 생성메서드를 만들었습니다.
//==생성 메서드==//
public static Order createOrder(Member member, Delivery delivery, OrderItem... orderItems) {
Order order = new Order();
order.setMember(member);
order.setDelivery(delivery);
for (OrderItem orderItem : orderItems) {
order.addOrderItem(orderItem);
}
order.setStatus(OrderStatus.ORDER);
order.setOrderDate(LocalDateTime.now());
return order;
}위의 Order 클래스에서 만든 생성메서드를 OrderItem 클래스에서도 만든 이유가 궁금합니다.
//==생성 메서드==//
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;
}OrderItem 클래스에도 생성메서드를 만들어준 이유가 연관관계에 있어서 "다"인 쪽에 만드는건가요?(예를 들어서, 연관관계 1대 다에서 다 쪽에 생성메서드를 만드는 것인지에 대한 질문입니다.)
回答 1
0
안녕하세요, 인프런 AI 인턴입니다.
whdk333님, 생성 메서드를 사용하는 주된 이유는 객체 생성 과정에서 필요한 비즈니스 로직을 내장하여 객체의 일관성을 유지하고 코드를 간결하게 유지하기 위함입니다. 주문(Order) 객체나 주문 항목(OrderItem) 객체의 경우, 단순히 필드 값을 설정하는 것을 넘어서 주문이나 주문 항목이 생성될 때 필요한 비즈니스 로직을 처리합니다. 예를 들어, 주문 항목을 생성할 때는 항목(Item)의 재고를 감소시켜야 하는 로직이 내포되어 있습니다.
이와 같이 생성 메서드는 객체를 생성하는 시점에 필요한 로직을 캡슐화하고, 객체 간의 관계를 설정하는 등의 복잡한 과정을 추상화합니다. 연관 관계에서 “다”인 쪽으로 생성 메서드를 만드는 것은 객체 간의 관계 설정을 보다 명확하게 하고, 코드 사용 시 오류를 줄일 수 있게 해줍니다. 특히, 도메인 모델에서 복잡한 연관 관곀와 비즈니스 로직이 관련된 경우 생성 메서드를 통해 객체의 생성과 관련된 로직을 효과적으로 관리할 수 있습니다.
따라서, OrderItem 클래스에도 생성 메서드를 만든 것은 OrderItem 인스턴스를 생성할 때 필요한 비즈니스 로직 처리를 위해서이며, 이러한 방식은 객체지향 프로그래밍에서 객체의 일관성을 보장하고 더욱 강력하고 안정적인 코드를 작성하는 데에 도움이 됩니다.
HelloSpringApplication.java 클래스 실행 오류
0
12
1
build 시 에러 해결방법 공유(docker.desktop 업데이트 -> 의존성 버전 수정)
0
20
1
네이버 API | '검색 - 책' API 제공 중단
0
40
2
Part 2 듣기전 복습하던 중, 아키텍처에 관한 질문이 있습니다.
0
47
2
장치 의존성과 CSR
0
36
1
테스트는 인터페이스를 대상으로 만드는것에 대해 궁금한 점이 있습니다.
0
31
1
[영한님]Spring Boot 및 프로젝트 생성
0
56
2
JPA 엔티티로 만들었다고 기술종속이 아닌지에 대한 질문
0
55
3
강의 요청 문의
0
40
2
클로드코드 명령어-대화&세션관리 수업 자료
0
42
1
PlatformTransactionManager, ResourcelessTransactionManager 질문
1
67
2
자료 한번에 다운받기
0
33
1
스프링 빈 등록 방법 2가지 다 알아야하는 이유
0
59
1
mybatis 를 이용한 crud에서 insert에서 resultType='long" 이라고 하셨는데요,
0
27
1
설계 트레이드 오프 링크 접속 안됨
0
85
2
테스트 질문, 어떤것을 사용할것인것에 대해서
0
46
1
깃허브주소 궁금합니다.
0
36
2
mariaDB 설정
0
33
1
섹션4 퀴즈 오타있어요.
0
46
1
AWS 배포 성능테스트
0
75
2
퀴즈가 안열려요
0
76
2
7강 보고 있는데요.. 글자가 너무 작아요
0
43
1
트래잭션 전파 기본- 에 대한 개념 질문? 이렇게 생각해도 맞나요?
0
46
1
헥사고날 아키텍처와 DDD를 적용할 때, 화면에 강하게 연관된 조회 데이터를 어떻게 다루는 게 좋은지 궁금합니다.
0
131
2

