tags : #인프런워밍업스터디BE #SpringBoot #java
트랜잭션이 무엇이고, 왜 사용해야 하는가?
쪼갤수 없는 업무 단위
org.springframework.transaction.annotation.Transactiona
의 @Transactional
을 서비스 메서드에 붙여주면 된다. @Transactional
public List<UserResponse> getUsersByAge(int startage,int endage){
checkAgeVality(startage, startage);
return userRepository.findByAgeBetween(startage, endage);
}
@Transactional(readOnly = true)
예외
가 일어나면 롤백시킨다.unchecked Exception
이 발생하면 해당 쿼리문을 커밋시키지 않고 롤백시킨다.아래 코드는 IllegalArgumentException
예외가 일어나서
saveUser 안에 있는 쿼리문을 커밋시키지 않고 롤백시켜서 데이터베이스에 반영되지 않는다.
@Transactional
public void saveUser(UserCreateRequest request){
User user = userRepository.save(new User(
request.getAge(),
request.getName()
));
throw new IllegalArgumentException();
}
save
를 사용하지 않아도 @Transactional
어노테이션을 쓴 메서드는 영속성을 감지하고 업데이트시켜준다.Checked Exceoption
과 Unchecked Exception
UPDATE _table_name_
SET _column1_ = _value1_, _column2_ = _value2_, ...
WHERE _condition_;
SpringBoot
공식 문서