[JPA] 트랜잭션 기초

장숭혁·2023년 11월 7일
0

TIL작성

목록 보기
12/60

JPA(JAVA Persistence API)에서 트랜잭션은 데이터 베이스 작업을 그룹화하면서 일련의 작업이 모두 성공적으로 완료되면 커밋하여 데이터베이스에 반영되고, 실패할때는 "롤백"하여 이전 상태로 되돌린다. 여러 클라이언트가 데이터베이스 서버에 데이터를 요청할때 데이터의 무결성과 정합성 유지위해 존재한다. 트랜잭션은 데이터베이스에서 수행되는 작업단위이다. 논리적 개념이며, 여러개의 sql이 하나의 트랜잭션에 포함될 수 있다. 즉, 트랜잭션(Transaction)은 데이터베이스에서 실행되는 일련의 SQL 명령문(쿼리)을 하나의 논리적 작업 단위로 묶는 개념이다

나의 계좌에서 다른 계좌로 이체할때, 돈을 인출하는 SQL 명령문과 계좌 B로 돈을 입금하는 SQL 명령문이 실행된다. 이를 트랜잭션으로 처리하려면 이 두 SQL 명령문을 하나의 트랜잭션에 묶을 수 있다. 트랜잭션은 두가지 특성이 있다. 처음 언급했다시피 성공하면 커밋되고 실패 하면 롤백 되는데 이는 트랜잭션의 원자성 덕분이다.

원자성 (Atomicity):

트랜잭션 내의 모든 SQL 명령문이 성공하거나 실패하는 경우, 모든 변경 사항이 적용되거나 적용되지 않는다는 것을 의미한다. 다시 말하면, 중간 단계에서 실패하면 변경 사항이 롤백되어 처음 상태로 돌아간다.

🗨 트랜잭션은 일관성이 있어야 된다. 한 작업단위에서 모든 처리가 완료된 후 데이터 베이스는 일련의 명령처리에 맞게 데이터가 유지되어야 한다.

일관성 (Consistency):

트랜잭션은 데이터베이스를 일관된 상태로 유지한다. 트랜잭션 시작 전과 종료 후 데이터베이스는 일관된 상태여야 하는데 , 돈을 인출하는 SQL 명령문은 나의 잔액을 감소시키고, 입금하는 명령문은 다른 사람의 잔액을 증가시켜야 한다.

데이터의 무결성 :

데이터의 무결성은 데이터의 정확성과 일관성을 나타내는 개념이다. 지정된 규칙과 제약 조건에 따라 저장되어야 한다. 데이터가 부정확하거나 비합법적인 값으로 오염되는 것을 방지하려는 목적으로 사용되며, 주로 기본 키, 외래 키, 도메인 제약 조건, 체크 제약 조건 등을 사용하여 보호된다. 특정 열에 숫자만 허용되고 음수 값이 들어가면 안 되는 경우, 데이터의 무결성을 위해 해당 열에 대한 체크 제약 조건을 설정할 수 있다.

데이터의 정합성 :

데이터가 다양한 위치에서 일관된 상태로 유지되어야 함을 나타내는 개념이다. 여러 시스템 또는 데이터 저장소 간에 데이터의 일관성을 보장하기 위한 것이 주요 목표 이다. 데이터가 중복되거나 서로 다른 시스템 또는 데이터베이스 간에 충돌하는 경우에도 일관된 상태로 유지되어야 함을 의미한다. 예를 들어, 여러 서버 또는 데이터베이스 간에 동일한 데이터가 사용되는 분산 시스템에서, 모든 복제본은 동일한 정보를 나타내어야 하며, 데이터의 정합성은 이를 보장하는 데 중요하다.

즉 무결성은 데이터 설계 원칙에 초점을 두고 정확성과 일관성에 관심을 가지고 있고, 정합성은 여러 클라이언트가 동시에 접근할때 정확성과 일관성을 유지하는데 관심이 있다.

profile
코딩 기록

0개의 댓글

관련 채용 정보