[ pom.xml ]
AOPWebTest [ pom.xml ] 에서 필요부분을 복사해 왔다.
위에는 오라클에서 트랜잭션 처리하는 부분이다.
[ web.xml ]
*.action 추가와 아래 UTF-8을 추가해주었다.
http://localhost:9090/trantestanno/ 이라고 url 주소에 쳤을경우
시작페이지인 http://localhost:9090/trantestanno/index.action 으로 나오게끔 해주고 싶다.
[ web.xml ]에서 추가만 해주면 된다.
[ web.xml ]
DB를 설정해 보자.
mapper.xml 설정
[ root-context.xml ]
SpringBegin 에서 [ root-context.xml ]를 복사해와서 수정해 주었다.
위에 트랜잭션 처리를 하기위해서는 또 추가를 해줘야 한다.
[ root-context.xml ]
@어노테이션으로 사용해서 트랜잭션을 해주겠다. 라는 말이다.
위에가 트랜잭션을 처리해주는 .class 이다.
[ servlet-context.xml ]
SpringBegin 에서 [ servlet-context.xml ] 에서 복사해 와서 편집해왔다.
위에 처럼 추가를 하나 해주었다.
root-context.xml 에서 설정해준 mapper 만들기
[ trantestanno.xml ]
Controller 파일을 만들어야 한다.
[ NoticeController.java ]
의존객체(의존객체 주입 IOC,DI)를 해주어야 한다.
service, model 패키지를 만든다.
[ NoticeService.java ]
[ NoticeDAO.java ]
DAO에서 의존객체주입을 한다.
[ root-context.xml ]
[ NoticeDAO.java ]
[ NoticeService.java ]
[ NoticeController.java ]
SQL 파일 만들기
-- 고립성에 대한 설명
동일한 데이터에 대해서 DML(update)가 일어나고 있는데
여기서 검정색 화면의 update 후 엔터를 했을경우 commit 인지 rollback 인지 아직 해주지 않았기 때문에
흰색 화면에서 update 후 엔터를 했을경우 앞서 검정화면의 update를 해주었기때문에 자동으로
그 컬럼은 락이 걸린다.
즉, 흰색화면은 대기상태가 된다.
여기서 검정화면에서 commit 을 해주면 락이 풀린다.
그후 흰색화면은 update가 되어진다.
위에 check조약은 일부러 error를 발생하고자 만들어 놓았다.
여기서 글을 써서 point 가 3이 되어지면 error가 발생할 텐데 그전까지 개발자가 if 문을 사용하여 잡아주었는데
이제는 트랜잭션 처리로 자동으로 rollback을 하여 글을 작성시 저장되어 지지 않게 한다.
[ NoticeController.java ]
Bootstrap을 사용한다.
[ index.jsp ] , [ header.jsp ], [ footer.jsp ] 는 교수님 파일을 받아왔다.
나의 포인트 만들기
[ header.jsp ]
나의 포인트 페이지 요청
[ NoticeController.java ]
[ InterNoticeService.java ]
[ NoticeService.java ]
[ InterNoticeDAO.java ]
[ NoticeDAO.java ]
[ trantestanno.xml ]
[ point.jsp ]
[ header.jsp ]
[ NoticeController.java ]
[ add_notransaction.jsp ]
교수님의 자료를 받아온 것이다.
위에는 input 태그인데 읽기전용 해놓은 것이다. 글쓰기 불가능
위의 내용은 취소번튼을 눌렀을시 새로고침 을 한것이다.
이유는 위에 input태그의 읽기 전용 때문이다.
[ add_notransaction.jsp ]
[ NoticeController.java ]
[ NoticeVO.java ]
[ NoticeController.java ]
[ InterNoticeService.java ]
[ NoticeService.java ]
[ InterNoticeDAO.java ]
[ NoticeDAO.java ]
[ trantestanno.xml ]
[ addEnd_notransaction.jsp ]
[ NoticeController.java ]
[ InterNoticeService.java ]
[ NoticeService.java ]
[ InterNoticeDAO.java ]
[ NoticeDAO.java ]
[ trantestanno.xml ]
[ noticeList.jsp ]
글번호를 클릭하면 상세내용보기를 하는데 다음 시간에 이어서 한다.
여기서 3번째로 글을 써보면~~~
완료를 누르면 아래처럼 오류가 나온다.
이유는 ~
제약조건에 위배가 되었기 때문이다.
오류인데 위에처럼 글목록이 DB에 들어온다....
하지만 위에처럼 point 는 2 가 유지된다.
결론은 잘못된 것이다.....
즉, 모두 rollback 이 되어야 하는 것이다.
이 rollback 은 우리가 아닌 앞으로 스프링 컨테이너가 해줄것이다.
다음 시간에 이어서 한다.~
chap 14 - GitHub (0) | 2020.01.07 |
---|---|
chap 13 - 게시판(트랜잭쳔처리O)-@Transactional, 글 상세 보여주기 (이전글,다음글) (0) | 2020.01.07 |
chap 11 - AOP 활용(로그인) (0) | 2020.01.06 |
chap10 - ★AOP2 @어노테이션 사용, 데이터 처리 (0) | 2020.01.03 |
chap9 - ★ AOP (0) | 2020.01.02 |