@Transactional(readOnly = true)

0

TIL

목록 보기
122/126

@Transactional

JPA에서의 데이터 변경이나 로직들은 트랜잭션 범위에서 영속성 컨텍스트 전략을 사용하고 있기 때문에 가급적 트렌젝션 안에서 처리되어야 한다.

@Transactional(readOnly = true)

readOnly = true를 사용하면 조회 메서드에서 읽기전용 트렌젝션으로 인식되기 때문에 불필요한 리소스를 줄여 성능이 최적화된다.

주의!

조회 메서드가 아닌것에 readOnly = true를 사용하면 데이터 변경이 안되므로 사용 금지

사용 예시 코드

@Service
@Transactional(readOnly = true) // 전체를 읽기 전용으로
public class MemberService {
    // 회원 가입
    @Transactional // 읽기 전용이 아닌 메서드에만 따로 지정
    public Long join(Member member) {
        // ...
    }

    // 회원 조회
    public Member findMember(Long memberId) {
        // ...
    }

    // 회원 전체 조회
    public List<Member> findMembers() {
        // ...
    }
}

0개의 댓글