장바구니, 주문 기능을 추가하려니 아무래도 책을 보면서 그대로 만들어서 그런가 많이 달랐다... builder 패턴도 사용하지 않고 entity-dto 변수명도 전부 다 다르고 파일 업로드 처리하는 거나 entity-dto 데이터 변환 작업도 달라서...
일단은 만들어둔 item을 다 없애고 리뷰 게시판, 시큐리티-회원가입/로그인은 놔두고 item, cart, order 부분을 모두 바꾸기로 했다. 추가적으로 값을 넣는 부분은 내가 builder 패턴으로 수정해서 사용했다.
그리고 리뷰와 관련된 쪽은 dtoToEntity/entityToDto를 사용하고 item쪽은 modelmapper를 사용하는거로!!
일단은 어제 오전 시간에 중간고사를 보고 오느라 오후부터 병합을 해서 모두 합치지는 못했다. 오늘 마저 다 합치고 현재까지 구현된 기능들이 제대로 실행이 되는지 확인 후에 프론트 작업을 해야할 것 같다!
@Test
@DisplayName("영속성 전이 테스트")
// Order 엔티티를 저장할 때 연관된 OrderItem 엔티티들도 함께 저장되는지 확인하기 위한 테스트
// 'Order' 엔티티에 Cascade 옵션이 설정되어 있기 때문에 'OrderItem' 엔티티들이 저장이 가능한 것
public void cascadeTest() {
Order order = new Order();
for(int i = 0; i < 3; i++) {
Item item = this.createItem();
itemRepository.save(item);
OrderItem orderItem = new OrderItem();
orderItem.setItem(item);
orderItem.setCount(10);
orderItem.setOrderPrice(1000);
orderItem.setOrder(order);
order.getOrderItems().add(orderItem);
// 각 item에 대한 'OrderItem'을 생성하고 'order'와 연결함
}
orderRepository.saveAndFlush(order);
// 주문('order')을 저장
em.clear();
// 영속성 컨텍스트를 클리어하여 1차 캐시를 초기화
Order savedOrder = orderRepository.findById(order.getId())
.orElseThrow(EntityNotFoundException::new);
// 방금 저장한 주문을 데이터베이스에서 다시 조회
assertEquals(3, savedOrder.getOrderItems().size());
// 조회한 주문에 연결된 'OrderItem'의 수가 3개인지 확인
}
1. 권한에 따른 게시판 노출 변경
2. 이미지 출력 오류 해결
3. 로그인일 때는 로그아웃, 로그아웃일 때는 로그인 아이콘이 보이게 변경
여기에서 로그아웃 같은 경우는 스프링 시큐리티 기능으로 구현했음
4. 메인 페이지에서 상품에 해당하는 image, genre, developer, title, price 가져오게 함
(나중에 리뷰 갯수, 조회수도 가져올 수 있게 구현할 예정)
5. 로그인/로그아웃, 회원가입, 메인페이지 DB와 연결했음
6. 로그인 버튼을 누르면 font를 다운로드 받는 오류 해결
.mvcMatchers("/css/","/js/","/img/", "/fonts/").permitAll()
이 부분에서 js랑 fonts에 대한 경로가 지정이 되어있지않아서 발생했던 오류