본문 바로가기

강의 내용 정리/스프링부트와 JPA 활용 1

7-8. 상품 주문 ~ 주문 목록 검색( 중간부분 아주중요 )

 

OrderController.java

모든 멤버, 아이템 조회 후 템플릿에 넘김.

 

OrderForm.html

<select> 로 선택할수있게함. th:each 는 foreach 랑 같음. (있는 만큼)

 

여길 보면. value에는 멤버의 id, text에는 member의 이름이 들어간다. -> option value=""이므로 <select  name="memberId" 이므로 memberId에 value값인 member의 id가 들어간 채로 넘어가게된다.

 

나머지도 동일

->memberId : member의 아이디.

-> itemId : item.id

-> 주문수량은 name="count"이므로 count값이 넘어옴.

 

만약 여기서 

 

!!##중요

주로 커맨드성( 주문) 같은 것들은 컨트롤러 레벨에서는 식별자만 넘김( 위에서 memberId, itemId 같이 )., 실제 핵심 비지니스 서비스에서 엔티티찾기부터 진행 -> 엔티티의 값들도 @Transactional 안에서 꺼내야 영속성있게 진행할 수 있어서( 이 말이 이해가 안되면 전 포스트를 봐라)  그래야 해당 엔티티의 상태를 바꿀 수도 있다. ( 변경 감지 ) -> 그래서 가급적으로 컨트롤러에서는 식별자만 주고 서비스계층에서 엔티티조회하자.

 

주로 커맨드성( 주문) 같은 것들은 컨트롤러 레벨에서는 식별자만 넘김( 위에서 memberId, itemId 같이 )., 실제 핵심 비지니스 서비스에서 엔티티찾기부터 진행 -> 엔티티의 값들도 @Transactional 안에서 꺼내야 영속성있게 진행할 수 있어서( 이 말이 이해가 안되면 전 포스트를 봐라)  그래야 해당 엔티티의 상태를 바꿀 수도 있다. ( 변경 감지 ) -> 그래서 가급적으로 컨트롤러에서는 식별자만 주고 서비스계층에서 엔티티조회하자.

 

주로 커맨드성( 주문) 같은 것들은 컨트롤러 레벨에서는 식별자만 넘김( 위에서 memberId, itemId 같이 )., 실제 핵심 비지니스 서비스에서 엔티티찾기부터 진행 -> 엔티티의 값들도 @Transactional 안에서 꺼내야 영속성있게 진행할 수 있어서( 이 말이 이해가 안되면 전 포스트를 봐라)  그래야 해당 엔티티의 상태를 바꿀 수도 있다. ( 변경 감지 ) -> 그래서 가급적으로 컨트롤러에서는 식별자만 주고 서비스계층에서 엔티티조회하자.

 

 

참고.@Transactional 없이 밖에서 조회하면 영속상태가 아님. (JPA랑 관계가 없음.)

 

 

 

 

 

 

 

==================================== 7-9. 주문 목록 검색

 

 

 

 

 

OrderController.java

주문 목록 가져오는 메서드. @ModelAttribute 해놓으면 Model에 자동으로 담긴다.(이름 없으면 변수명.)

굳이 모델에 안담아도 자동으로 담기고 

이 부분이 

 

orderList.html

@ModelAttribute 했던 orderSearch 가 object 에 들어온다. 

 

submit 누르면 orderSearch에 값이 바인딩된다. ( membername, orderstatus)

 

이거보고 cancel 주소 파악
여기에 적용.

 

# 수업 끝

 

과거에는 지금까지 뷰만드는 일이었지만 이제 API로 통신해야함.(JPA로 어떻게 API를 설계하나, API로 CRUD)

-> 다음시간 API 만들기

 

Recent Posts
Popular Posts
Recent Comments