고급개발자가될초보
150
2019-05-20 15:29:00
4
149

Spring transaction어노테이션 생기기전 질문드립니다


궁금해져서 그런데 transaction 어노테이션

생기기전에는 어떻게 트랜스잭션을 관리했나요?

0
0
  • 답변 4

  • 아야로
    1k
    2019-05-20 15:34:45

    저는 스프링 AOP에 "com.~~..*Service.*(..))"와 매칭되는 단위로 일괄적인 트랜젝션을 걸고, 세세한건 그때그때 트랜젝션 매니저를 호출하는 방식으로 사용했었는데 다른분들은 어떻게 하셨는지 궁금하네요.

    0
  • satis
    1k
    2019-05-20 15:37:01


    트랜잭션.오픈

    try

           비즈 수행...

           execute sql

    catch

           세션.롤백

    finaly

           세션.커밋

           트랜잭션.클로즈


    이런식으로 try-catch문으로 묶어 수행하죠.

    어노테이션으로 선언된 부분을 프레임워크에서 실제 저런 방식으로 구현을 한답니다.


    스프링 트랜잭션을 사용 하더라도

     - db 쓰루풋 문제로 인한 퍼포먼스가 필요한 로직의 경우

     - 특정 비즈단에서 다른 트랜잭션을 열어야 하는 경우

    사용자가 임의로 트랜잭션을 오픈하고 세션을 커밋을 해야할 경우 저런 방식으로 구현합니다.


    - 모바일 작성으로 소스 부분은 정확하진 않습니다.

    0
  • 잘모르겠고
    100
    2019-05-20 15:37:18
    아야로님과 동일하게 했었습니다
    0
  • 늅늅
    502
    2019-05-20 15:38:35

    conn = 커넥트.getConn();  //커넥트 만들고

    conn.setAutoCommit(false); // 자동 커밋 off

     ......................

    비지니스 로직 (update / insert / delete  )

    .................

    conn.commit // 정상적으로 update / insert / delete 성공 하면 커밋


    exception 발생 하면

    conn.rollback(); 에러 발생시 커밋 안하고 롤백 처리


    스프링 없이 할떄 이렇게도 했어요~

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.