인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

chi6465618님의 프로필 이미지
chi6465618

작성한 질문수

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

세션에 있는 객체는, 영속성 컨텍스트에 있는 객체와 다른 것인가요?

작성

·

272

0

[질문 내용]

안녕하세요 영한님! 강의 항상 잘 듣고 있습니다~

저는 spring 로그인 강의를 듣고 아는 것들로 프로젝트를 하고 있습니다.

저는 주문 취소 컨트롤러를 이렇게 작성했습니다!

@GetMapping("/order/cancel")
    public String cancel(@RequestParam("orderId") Long orderId, HttpServletRequest request){

        // 세션에서 loginMember 객체를 가져온다 
        HttpSession session = request.getSession(false);
        if (session == null) {
            return "redirect:/member/login";
        }
        Member loginMember = (Member) session.getAttribute("loginMember");

        // 파라미터로 받은 orderId로 주문 객체를 찾는다.
        Order order = orderRepository.findById(orderId);

        // 주문의 멤버와 세션의 멤버가 동일하면 주문취소처리
        if (order.getMember().equals(loginMember)){
            orderService.cancel(orderId);
        }
        return "redirect:/member/mypage";
    }

로그인한 멤버가 주문을 취소하려고 할 때, 세션에 있는 loginMember를 가져와서 order.getMember()와 같다면 주문취소처리를 해주었습니다.

근데 order.getMember().equals(loginMember) 가 false로 나오는 이유를 잘 모르겠습니다,,,ㅠㅠㅠ

답변 1

0

안녕하세요. chi6465618님, 공식 서포터즈 y2gcoder입니다.

맞습니다. 말씀하신 것처럼 세션에서 불러온 Member 객체는 영속성 컨텍스트에서 관리하는 객체가 아니기 때문에, 영속성 컨텍스트에서 가져온 Member와 비교시 false가 나옵니다!

영속성 컨텍스트에 있는 객체끼리 불러온 경우가 아니기 때문에 동일성을 보장해주지 않습니다!


감사합니다.

chi6465618님의 프로필 이미지
chi6465618

작성한 질문수

질문하기