본문 바로가기
반응형

rollback4

[Oracle] savepoint 데이터베이스를 공부하다보면 Commit, Rollback 이랑 함께 나오는 단어가 있는데 savepoint이다. 게임에서 시점을 저장하는것과 비슷한 개념으로 생각하면 된다. 간단하게 예제로 바로 알아보면 이해가 갈것이다. 1. Insert into table values ('1'); 2. SAVEPOINT save1; 3. Insert into table values ('2'); 4. SAVEPOINT save2; 5. Delete from table; 6. Rollback to save1; 흐름대로 보면 1번 1 을 넣는다. 2번 save1이라는 이름으로 저장한다. 3번 2를 넣는다. 4번 save2라는 이름으로 저장한다. 5번 모든 데이터를 삭제한다. 6번 save1지점으로 돌아간다. 이렇게 되면 결.. 2023. 11. 11.
@Transactional annotation spring에서 사용하는 annotation 중 하나인 이 Transactional annotation에 대해 소개하려고 한다. 사용은 메서드 상단에 설정을 해준다. 예제는 아래와 같다. @Transactional public void interal() { serviceA.transactionalTest(); serviceA.transactionalTest(); serviceA.transactionalTest(); throw new ExceptionEx("errr"); } 이미 검색을 하고 들어온 순간부터 Transactional 이라는 애가 뭘 하는 애인지는 알거라 생각하지만 간단히 설명하면 스프링 내에서 AOP 원리로 동작을 하며 Transactional 로 묶어둔 메서드가 시작부터 종료할때까지 모든.. 2023. 7. 10.
@Transactional 사용시 주의 사항1 (checked Exception) 개발을 하다가 Transactional annotation을 사용하거나 본적이 있을것이다. 해당 어노테이션은 해당 메서드 내에서 어떤 작업들이 이루어지다가 에러가 날 경우 수행했던 작업을 모두 이전으로 돌려주는, Rollback시켜주는 작업이다. 하지만 모든 에러와 예외사항에 대해서 rollback이 되는것은 아니다. 해당 포스팅을 읽기 전에 에러와 예외에 관해서 아래 참고 포스팅을 읽고 오는것을 추천한다. 글을 읽고 왔다면 이제 에러와 예외(체크, 언체크) 에 대해서 구분을 할수 있을것이다. 자바 프레임워크에서는 기본적으로 Transactional 이 checked Exception 에 대해서는 롤백시키지 않도록 설계가 되어있다. 이유는 스프링 프레임워크가 EJB 관습을 따르기 때문이다. 만약 코드에서.. 2023. 2. 20.
2PC 란? Two Phase Commit 의 약자인 2pc는 CQRS 의 패턴과 비슷하게 트랜잭션이 실패할 경우 rollback을 대비해서 존재하는 것이다. CQRS 에 대해서는 아래 참고 포스팅을 참고 하면 된다. CQRS에 비해서 2pc는 어떻게 보면 더 간단하다고 생각이 들수도 있지만. 트랜잭션의 유형에 따라 , 상황에 따라 CQRS 를 사용해도 되고 2pc를 사용해도 된다. 그럼 이 2pc는 처음 시작하는 트랜잭션부터 끝나는 지점까지 모든 작업이 실패가 없이 이루어 진다면 그때 한번에 쿼리를 날리고 commit 을 하게 된다. 그렇게 된다면 rollback을 할일이 없어져 트랜잭션이 꼬이는 부분에서는 해결이 된다. - 시작 : 독립적인 일을 시작하는 것 - 끝 : 준비 이전까지 일을 끝내는 것 - 준비 - .. 2022. 11. 4.
반응형