Spring

chap 13 - 게시판(트랜잭쳔처리O)-@Transactional, 글 상세 보여주기 (이전글,다음글)

hongkd 2020. 1. 7. 11:10

전 시간과 이어서 하자면~

게시판에 글쓰기는 계속 가능 했지만 테이블에 Point 가 point < 3 이기 때문에 3번째 글쓰기부터

오류가 떨어졌다.

하지만 오류가 났지 게시판 테이블에는 글이 계속 올라갔고, point 는 2에서 올라가지 않았다.

 

먼제 Point 초기화 해주었다.

 

 

 

[ NoticeController.java ]

Exception을 강제로 띄워본후 @ExceptionHandler 를 확인해 본다.

다시 Point 를 2로 올려준다.

 

 

 

 

[ NoticeController.java ]

위에 같이 웹상에 오류메시지가 나오지 않고 404 로 나온다. 

Controller 에서 @ExceptionHandler 를 정의해 주었고 아직 return 에 jsp를 구현해주지 않아서 그렇다.

jsp에 오류메시지를 띄워주기만 하면 된다.

 

 

[ NoticeController.java ]

 

 

위에처럼 시작페이지로 이동해 진다.

 

 

==================================================================

 

 

트랜잭션 처리

 

 

[ NoticeController.java ]

 

[ add_transaction.jsp ]

 

 

[ NoticeController.java ]

 

여기서~!

트랜잭션 처리는 Service 단에서 해준다.!!!!!!!!!!

 

[ InterNoticeService.java ]

 

 

[ NoticeService.java ]

@Transactional

>>>>> 트랜잭션처리를 해야할 메소드에 @Transactional 어노테이션을 설정하면 된다. 
       rollbackFor={Throwable.class} 은 롤백을 해야할 범위를 말하는데 
      Throwable.class 은 error 및 exception 을 포함한 최상위 루트이다. 
      즉, 해당 메소드 실행시 발생하는 모든 error 및 exception 에 대해서 롤백을 하겠다는 말이다. 

 

 

 

[ servlet-context.xml ]

AOP 대상으로 설정, Aop - PointCut

 

[ root-context.xml ] 트랜잭션 DB 설정

 

[ NoticeService.java ]

위에처럼 설정해주면 Spring container 가 알아서 해준다.

 

DB 에서 point 를 0으로 재설정 해주었다.

 

 

[ addEnd_transaction ]

 

 

위와 같이 point 가 2까지만 되어지고 3이상 되어지려 하니~

checked 제약에 걸리므로 글쓰기를 하였을 경우 자연스럽게 rollback이 되어져서

ExceptionHandler를 보여주고

point는 2로 되어지고 글등록 또한 되어지지 않는다.

 

 

Service 에서 트랜잭션처리 를 해준다.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 

 

 

==================================================================

 

 

 

-- 글 상세목록 보여주기 (이전글,다음글)

 

오라클에서 함수를 사용한다.

hr 에서 - lag 검색

 

 

우리는 특정한 글을 눌렀을 경우 그 특정글에 대한 이전과 다음을 보여주어야 한다.

inline View를 사용해야 한다.

 

위 select 를 이용하여 웹으로 출력해 보자.

 

 

[ noticeList.jsp ]

[ NoticeController.java ]

[ InterNoticeService.java ]

[ NoticeService.java ]

[ InterNoticeDAO.java ]

[ NoticeDAO.java ]

[ trantestanno.xml ]

[ contentView.jsp ]