작성
·
83
0
public class 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;
}
위에는 jpa1강 파트이고
아래는 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 상품 등록 처리 파트에서 @ModelAttribute 중 일부입니다.
jpa에서는 혹시 @ModelAttribute 이부분을 못쓰나요? 아니면 쓸 쑤는 있는데 주문처럼 생성메서드일때는 안쓰는건가요?
// @PostMapping("/add")
public String addItemV2(@ModelAttribute("item") Item item, Model model) {
itemRepository.save(item);
// model.addAttribute("item", item); //자동 추가, 생략 가능
return "basic/item";
}
답변 1
0
안녕하세요. zzzzz님, 공식 서포터즈 y2gcoder입니다.
사용하는 영역이 다르다고 이해해주시면 감사하겠습니다. 이 부분은 설계와 관련된 영역이라 보셔도 좋습니다. 예를 들어 위의 createOrder() 는 컨트롤러의 메서드가 아니라 도메인 영역에 있는 엔티티의 메서드 입니다. @ModelAttribute는 표현 영역 중에서도 컨트롤러 단에서 사용하여 요청과 객체 간의 매핑을 용이하게 해주는(+추가로 모델에 해당 객체를 넣어주는) 애노테이션입니다. 그래서 결과적으로 도메인 영역에서 @ModelAttribute()를 사용하시지 말라고 말씀드리고 싶습니다 🙂 제가 그렇게 직접 사용하지는 않았으나, 그렇게 사용할 일이 없으실 겁니다.
정리하자면 @ModelAttribute는 컨트롤러의 메서드일 때만 사용하는 의미가 있다고 생각합니다. 추가로 도메인 영역에 있는 코드에서 표현 영역에 있는 코드를 의존하는 것은 대부분 유지보수할 때 좋지 않았습니다!
감사합니다.