본문 바로가기

Transaction

거래 (Transaction) 1. 거래의 생성 거래는 간단하게 돈을 송금한다는 의사표시로 생각할 수 있으며, 실제로 제출되기 전까지는 금융 시스템 내에 보이지 않는다. 거래는 온라인 혹은 오프라인 상에서도 가능하며, 이는 거래의 내용과 서명이 체인상에서 발생하는 것이 아니라는 것을 의미한다. 즉 거래는 체인과 무관하게 발생하며, 이를 실제로 의미있는 거래가 되게 하기 위해서는 체인 상에 전파하는 것이 필요하다. 거래는 간단하게 그 거래의 내용이 존재하며, 서명으로 그 거래가 유효한 거래임을 표시하는 과정으로 구성되어 있다. 거래에는 개인키를 비롯하여 어떠한 민감한 정보가 포함되어 있지 않기 때문에 네트워크 상에서 공개되어도 무방하다. 2. 거래의 전송 비트코인 기준 거래의 크기는 300~400바이트 크기이며, 노드 중에 하나에 도달..
@Transactional Attribute 스프링에서 트랜잭션을 관리하는 방법은 크게 세 가지로 나누어진다. 애너테이션 @Transactional을 사용하는 방법, AOP를 이용하여 트랜잭션을 관리하는 방법, 프로그래밍으로 직접 제어하는 방법 등이다. 애너테이션 @Transactional의 경우 기본 동작을 재정의하는 데 사용할 수 있는 여러 애트리뷰트를 제공하고 있다. propagation 트랜잭션의 전파를 의미하는 propagation은 값으로 Propagation enum에 정의된 REQUIRED, SUPPORTS, MANDATORY, REQUIRES_NEW, NOT_SUPPORTED, NEVER, NESTED 등을 입력받을 수 있다. 이 값들이 의미하는 바는 다음과 같다. 전파유형 설명 REQUIRED 이미 존재하는 트랜잭션을 지원. 트랜..
Transaction의 이해 트랜잭션(transaction)은 가장 작은 업무의 단위라고 정의된다. 예를 들어 은행에서 이체하는 경우를 생각하면, 내 계좌에서 10만원의 돈이 출금되고, 그 금액만큼을 다른 사람의 계좌에 입금해야한다. 만일 어떠한 이유에서든지 작업에 문제가 생겨 작업을 되돌려야하는 경우가 있다면, 상대방의 계좌에는 돈이 입금되지 않은 상태에서 그치는 것이 아니라 그 돈이 다시 내 계좌에 존재하도록 하는 상태까지가 원 상태로의 복귀임을 알 수 있다. 즉 이체라는 작업은 내 계좌에서의 출금과 상대방 계좌로의 입금이라는 형태로 구성되어 있다는 것을 알 수 있고, 이것이 가장 작은 업무의 단위임을 알 수 있는 것이다. 그리고 작업은 완전히 돈이 이체되는 것으로 완결되거나(commit), 돈이 이체되지 않고 내 계좌에 돈이 ..