본문 바로가기

SPRING

트랜잭션이란?

* 트랜잭션이란?

 

메서드를 묶어 버리는 것

둘 중에 하나라도 실행이 안되면 둘 다 안되게 하는 것

 

쿼리문이 한꺼번에 실행되거나, 그렇지 못하다면 그냥 둘 다 실행하지 마!!

 

둘 다 실행되었다면 처리를 확정 짓고, 처리 안됐으면 롤백으로 처리해줘야 함

 

게시판에서 사용 가능. 어떤 식으로?

-> 게시판 테이블과 댓글 테이블이 있다.

게시판의 1번 글에 대해 댓글 테이블에 댓글이 3개 달렸다고 치자.

근데 1번 게시글을 삭제해버리면, 연결된 댓글 테이블의 댓글 3개는 삭제할 수 있는 방법이 없다 (웹적으로, 디비에서는 가능)

만약, 1번 게시글 삭제가 실패했을 경우, 댓글도 삭제될 수 없다.

즉, 삭제되려면 같이 삭제되고, 삭제가 안되려면 둘 다 안되야한다.

글을 삭제하면 댓글도 삭제된다 (함께 움직임)

 

 

* 트랜잭션의 특징

 

1) 원자성 : 더 이상 나눌 수 없는 작업들은 반드시 전부 처리되거나 전부 처리되지 말아야 함

 

내 계좌에서 돈이 나가면, 당연히 주문이 들어가야 함

내 계좌에서 돈이 안 나가면, 당연히 주문이 들어가선 안됨

 

게시판의 글이 삭제되면, 댓글도 삭제되어야 함

게시판의 글이 삭제되지 않으면, 댓글도 삭제되어선 안됨

 

2) 일관성 : 사용되는 모든 데이터는 일관적이어야 한다. -> 신뢰성


3) 격리성 : 처리되는 도중에는 외부에서 트랜잭션에 개입해서는 안됨

 

두 개 이상의 로직을 하나처럼 실행해주는 것이기 때문에, 외부에서 아무도 개입해서는 안됨

결제를 했는데 서버가 벼락(개입하는 애)을 맞으면 안됨


4) 영속성 : 일단 처리된 트랜잭션은 반드시 시스템에 영구적으로 적용되어야 한다.

처리가 되었으면, 되돌리면 안 됨. 롤백하면 안됨

 

5) 순차성 : 데이터를 로드하고 트랜잭션을 실행해 수행된 후의 상태로 만들어준다.

트랜잭션에 정의해놓은 순서대로 처리해라

'SPRING' 카테고리의 다른 글

maven 프로젝트 / IoC  (0) 2020.09.14
트랜잭션 - 예제 [ xml, 어노테이션 ]  (0) 2020.09.14
AOP - 어노테이션을 이용한 예제  (0) 2020.09.14
AOP란?  (0) 2020.09.12
게시판 - 게시글 수정  (0) 2020.09.11