chap 13 - 게시판(트랜잭쳔처리O)-@Transactional, 글 상세 보여주기 (이전글,다음글)
전 시간과 이어서 하자면~
게시판에 글쓰기는 계속 가능 했지만 테이블에 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 ]