my-batis를 사용할때는 transaction을 관리하며 update나 delete query가 예상 외의 작업을 진행했을때 rollback을 진행했던 기억이 있다.
JPA ORM을 사용시에는 어떻게 해야할까 ?
트랜잭션(transaction) : 논리적 작업단위.
Transaction 을 자동으로 관리해준다. 예를 들어,
@Transaction
public void test(){
repo.insert();
repo.update();
}
test 함수가 실행되기전 트랜잭션이 시작되고 성공적으로 함수가 종료되면 commit한다.
insert query가 성공적으로 이루어지고 update에서 exception 이 발생하면 rollback하여 원자성을 보장한다.
readOnly로 설정했다면 해당 Transaction 안에서는 insert, delete, update query가 불가능하다.
Transaction의 격리수준을 설정할 수 있다.
ex)
runtime Exception 발생시 rollback한다. 혹은, 특정 예외 발생 시 rollback을 하지 않도록 할 수 있다.
설정한 시간안에 transaction 이 종료되지 않았다면 rollback한다.