[JPA] Transactional
@Transactioal
Transaction
데이터베이스의 상태를 변경하는 작업 또는 수행되는 연산들을 의미하며, begin, commit을자동 수행하고 예외가 발생하면 rollback처리를 자동으로 수행
스프링에서는 어노테이션 방식으로 @Transactional을 클레스, 메소드에 선언하여 사용하며, 선언된 곳에는 트렌잭션 프록시 객체가 생성되어 commit, rollback을 해준다.
@Transactional(readOnly = true)
public class MemberService {
@Transactional // default => readOnly = false 일기/쓰기 에서 true 를 하면 쓰기가 안된다.
public void join(Member member) {
memberRepository.save(member);
}
}
@Transactional(readOnly = true) 를 선언하면 읽기 전용으로 데이터가 변경되어도 commit되지 않는다. 데이터의 변경이 없는 읽기 전용 메서드에사용되며, 영속성 컨텍스트를 플러시 하지 않으므로 약간의 성능 향상을 가질 수 있다.
JPA의 변경감지는 transaction이 commit될때 장동되며, Spring은 @transactional 어노테이션을 선언한 메서드가 실행되기전, transaction begin 코드를 삽입 하며 메서드가 실행된 후, transaction commit코드를 삽입하여, 객체 변경감지를 수행하게 유도한다
Author And Source
이 문제에 관하여([JPA] Transactional), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hyunho058/JPA-Transactional저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)