시퀀스 방식에서 롤백시 시퀀스 문의
365
작성한 질문수 3
시퀀스 방식에서는 시퀀스로부터 next value를 가져와서
캐시에 엔티티를 캐싱한다고 했는데요
만약 커밋이 롤백 된다면 시퀀스도 다시 롤백 되는 걸까요?
그렇다면 시퀀스를 가져갔다가 롤백되는 사이에
다른 프로세스에서 시퀀스를 가져간 경우는 어떻게 될까요?
답변 2
18
jdkjfkd fjfjdk님 좋은 질문입니다^^!
사실 저도 과거 시퀀스나 채번 테이블을 다룰 때, 왜 꼭 구멍이 생겨야 할까? 하는 의문을 가진 적이 있습니다.
결국 서비스를 운영하면서 자연스럽게 이해하게 되었는데,
만약 시퀀스를 받았는데 100번이면, 100번이라고 해서 로깅도 남기고 쭉 비즈니스를 이어가게 됩니다. 그런데 문제가 생기서 이 부분이 롤백되었는데, 시퀀스까지 롤백되면, 로그에는 다 100이라고 남아있겠지요. 그리고 다음 비즈니스 로직이 도는데, 시퀀스를 받으면 다시 100번이 됩니다. 여기서 로깅도 또 100이라고 남기게 되겠지요. 결과적으로 어떤 부분이 정상이고, 어떤 부분이 비정상 로깅인지 확인하기가 어려워집니다. 이게 로그 정도면 문제가 적은데, 이 롤백된 100번 시퀀스를 어디에 활용했다가 롤백되고, 다음 정상 케이스에서 다시 100번을 받게 되면... 정말로 이슈를 찾아가기 어려워집니다.
추가로 구현레벨도 궁금해서 하이버네이트 코드까지 파본적이 있는데, 비즈니스 로직의 트랜잭션이 롤백되도, 시퀀스는 롤백 없이 진행되도록 하기 위해 테이블 전략의 경우 별도의 커넥션을 받아서 사용할 정도로 코드가 만들어져 있었습니다.
작은 도움이 되셨기를 바랍니다. 감사합니다^^
Entity 동등성 비교
0
10
1
실무 조언 관련 질문입니다.
0
41
1
H2데이터베이스 파일 생성
0
51
2
서브쿼리 강의에서 ALL 예시 관련 질문드립니다.
0
49
2
수정또는 삭제시 영속성 엔티티에 값이 무조건 있어야 하나요?
0
48
1
JPQL 메소드와 락
0
52
1
Delivery @OneToOne
0
57
1
17강 4~5분대 테이블 값 조회가 안됩니다.
0
89
2
UnsupportedOperationException 발생
0
82
3
H2 Database 연결이 안됩니다.
0
89
2
연관관계 매핑 질문드립니다.
0
82
2
h2데이터베이스 실행오류
0
105
2
persistence.xml
0
103
2
양방향 연관관계에서 연관관계의 주인(mappedBy)을 왜 꼭 정해야 하나요?
0
77
1
영속성 컨텍스트
0
62
1
JPA 프록시
0
90
1
Native Query와 MyBatis
0
63
1
영속성 컨텍스트는 어떤 메모리에 저장되는건가요?
0
83
1
임베디드 타입 예시 코드 관련 질문
0
112
3
명시적 조인에서 별칭을 주면 왜 객체에 접근할 수 있나요
0
90
3
인텔리제이 패키지 커서 단축키 질문
0
106
2
혹시 현재는 ID 데이터 타입이 String이면 안되나요?
0
136
1
양방향 연관관계 시 연관관계 주인을 설정하는 이유
0
68
1
임베디드 타입과 MappedSuperClass의 차이점이 궁금합니다.
0
95
1





