ABOUT ME

Developer를 위한 Reference 블로그 입니다.

Today
Yesterday
Total
  • 02. Transaction
    Spring Web Project/7. AOP와 트랜잭션 (Transaction) 2021. 1. 31. 15:52
    반응형

    1. 트랜잭션의 기본 원칙(ACID 속성)

      1) 원자성(Atomicity) : 하나의 트랜잭션은 모두 하나의 단위로 처리

      2) 일관성(Consistency) : 트랜잭션이 성공했다면 DB의 모든 데이터는 일관성 유지

      3) 격리(Isolation) : 트랜잭션으로 처리되는 중간에 외부의 간섭은 없어야함

      4) 영속성(Durability) : 트랜잭션이 성공적으로 처리되면, 그 결과는 영속적으로 보관

     

    2. 트랜잭션 매니저 설정

    root-context.xml

      > 하나의 DataSource를 사용하는 경우, 스프링에서 제공하는 DataSourceTransactionManager를 이용, DataSource 주입

      > <tx:annotation-driven>은 @Transactional 애노테이션을 이용한 트랜잭션 관리가 가능

     

    Note) @Transactional 우선순위

      1) 메소드의 @Transactional 설정이 가장 우선시 됩니다.

      2) 클래스의 @Transactional 설정은 메소드보다 우선순위가 낮습니다.

      3) 인터페이스의 @Transactional 설정이 가장 낮은 우선순위입니다.

     

    3. 댓글 카운트 @Transaction 적용

      1) tbl_board 테이블 변경

        > alter table tbl_board add column replycnt int default 0;

      2) BoardVO.java

        > private int replycnt; 및 getter/setter 추가

      3) BoardSQL.xml

        > select절 replycnt 컬럼 추가

      4) BoardDAO.java, ReplyDAO.java

        > BoardDAO.java : public void updateReplyCnt(Integer bno, int amount) throws Exception; 추가

        > BoardSQL.xml : update tbl_board set replycnt = replycnt + #{amount} where bno = #{bno} 추가

    BoardDAOImpl.java

      > ReplyDAO : public int getBno(Integer rno) throws Exception; 추가

      > ReplySQL.xml : select bno from tbl_reply where rno = #{rno} 추가

    ReplyDAOImpl.java

      5) ReplyServiceImpl.java

    ReplyServiceImpl.java

      6) list.jsp

    list.jsp

      7) log 확인

    @Transactional이 적용된 경우, Connection open > 2개의 SQL문 처리 후 commit() > Connection close

    4. 게시물 조회 수 @Transaction 적용

      1) BoardDAO.java

        > public void updateViewCnt(Integer bno) throws Exception; 추가

      2) BoardSQL.xml

        > update tbl_board set viewcnt = viewcnt + 1 where bno = #{bno} 추가

      3) BoardDAOImpl.java

        > session.update(namespace + ".updateViewCnt", bno); 추가

      4) BoardServiceImpl.java

    BoardServiceImpl.java (@Transactional 속성 : 격리 레벨 사용)

    반응형

    'Spring Web Project > 7. AOP와 트랜잭션 (Transaction)' 카테고리의 다른 글

    01. AOP  (0) 2021.01.28
Designed by Tistory.