0001. 조회 수 기능 구현 중에 상세 보기를 했을 때 조회 수가 올라가지 않음

@Transactional(readOnly = true)
    public FeedDetailResponse getFeedDetail(Long feedId) {

        Feed feed = feedRepository.findById(feedId)
                .orElseThrow(() -> FeedNotFoundException.EXCEPTION);

        feed.addViews();

        return FeedDetailResponse.builder()
                .feedId(feed.getId())
                .title(feed.getTitle())
                .content(feed.getContent())
                .createdAt(feed.getCreatedAt())
                .updatedAt(feed.getUpdatedAt())
                .views(feed.getViews())
                .name(feed.getUser().getName())
                .build();
    }

readOnly = true 를 지워줌

왜 ?

트랜잭션에 readOnly = true 옵션을 주면 스프링 프레임워크가 하이버네이트

세션 플러시 모드를 MANUAL로 설정함.

이렇게 되면 강제로 플러시를 호출하지 않는 한 플러시가 일어나지 않음

따라서 트랜잭션을 커밋하더라도 영속성 컨텍스트가 플러시 되지 않아서

엔티티의 등록, 수정, 삭제가 작동하지 않음 -> 이거 때문에 오류났음

또한 읽기 전용으로, 영속성 컨텍스트는 변경 감지를 위한

스냅샷을 보관하지 않으므로 성능이 향상된다.


0002. URL를 잘못 짠 경우

어느 한 URL ...
@GetMapping("/feed/{feed-id}) {
@PathVariable ~~~~
코드 ...
}

또 다른 URL ...
@GetMapping("/feed/{title}) {
@PathVariable ~~~~
코드 ...
}

예외 코드 ...
심각: Servlet.service() for servlet [spring] in context with path [/library] threw exception [Request processing failed; nested exception is java.lang.IllegalStateException: Ambiguous handler methods mapped for HTTP path '<http://localhost:8080/library/mgr>': {public java.lang.String com.sun.controller.MainController.mgr(org.springframework.ui.Model) throws java.lang.Exception, public java.lang.String baedo.baedoController.MgrController.list(int,org.springframework.ui.Model) throws java.lang.Exception}] with root cause
 
java.lang.IllegalStateException: Ambiguous handler methods mapped for HTTP path '<http://localhost:8080/library/mgr>': {public java.lang.String com.sun.controller.MainController.mgr(org.springframework.ui.Model) throws java.lang.Exception, public java.lang.String baedo.baedoController.MgrController.list(int,org.springframework.ui.Model) throws java.lang톸

URL을 바꿔준다

왜 ?