* 트랜잭션이란?
메서드를 묶어 버리는 것
둘 중에 하나라도 실행이 안되면 둘 다 안되게 하는 것
쿼리문이 한꺼번에 실행되거나, 그렇지 못하다면 그냥 둘 다 실행하지 마!!
둘 다 실행되었다면 처리를 확정 짓고, 처리 안됐으면 롤백으로 처리해줘야 함
게시판에서 사용 가능. 어떤 식으로?
-> 게시판 테이블과 댓글 테이블이 있다.
게시판의 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 |