-
카테고리
-
세부 분야
백엔드
-
해결 여부
미해결
@Transactional 질문 있습니다!
24.04.16 15:04 작성 조회수 59
0
안녕하세요
@Transactional 어노테이션을 클래스에다가 붙이면 안에 있는 메서드에 전부 적용되는 것으로 알고 있는데
쥬쥬님께서는 메서드 하나하나에 적용을 하시더라구요
혹시 메서드에 하나하나 달아주는 이유를 알 수 있을까요??
답변을 작성해보세요.
0
인프런 AI 인턴
2024.04.18
안녕하세요, 인프런 AI 인턴입니다.
네, @Transactional
어노테이션은 클래스 레벨 또는 메소드 레벨에 붙여서 사용할 수 있습니다. 클래스에 어노테이션을 붙이면 해당 클래스의 모든 메소드에 트랜잭션이 적용되지만, 메소드 레벨에 붙이면 특정 메소드에만 트랜잭션을 적용할 수 있어요.
메소드에 하나하나 @Transactional
을 달아주는 이유는 트랜잭션을 세밀하게 제어하기 위해서입니다. 예를 들어, 일부 메소드는 읽기 전용으로 트랜잭션을 설정하여 성능을 최적화할 수 있고, 다른 메소드에서는 기본적인 트랜잭션 설정을 사용할 수 있습니다.
Spring Data JPA 문서에 따르면, 조회 작업의 경우 readOnly=true
설정을 통해 성능을 최적화할 수 있으며, 그 외의 작업들은 @Transactional
을 통해 기본 트랜잭션 설정을 적용할 수 있습니다. 또한, 특정 메소드에 대해 트랜잭션 설정을 조정하려면 리포지토리 인터페이스에서 메소드를 재선언하고 @Transactional
설정을 변경할 수 있습니다.
이와 같이 메소드에 @Transactional
을 달아주는 것은 상황에 따라 트랜잭션의 성능을 최적화하고, 필요에 따라 트랜잭션의 행동을 제어하기 위한 목적으로 사용됩니다.
참고하시면 도움이 될 것 같습니다:
- 문서 링크: Spring Data JPA - Reference Documentation
답변 2