강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

JuNu님의 프로필 이미지
JuNu

작성한 질문수

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1

회원 애플리케이션 서비스 테스트 (2)

record class @Transactional 사용에 대해서

작성

·

46

0

안녕하세요 토비님
회원 애플리케이션 서비스 테스트 (2) -25:19
에 대해 질문 드립니다.

record 에 @Transactional을 사용하면
실행에는 문제가 없으나 인텔리제이에서

 

Classes annotated with '@Transactional' could be implicitly subclassed and must not be final

 

이와같은 경고 메세지를 주는데
무시하고 지나가도 되는건지요?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. JuNu님.

토비의 ‘클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1’ 강의 관련 질문을 주셨네요. record 클래스에 @Transactional 어노테이션을 사용했을 때 발생하는 경고 메시지에 대한 질문입니다.

@Transactional 어노테이션은 스프링이 트랜잭션 관리를 위해 프록시 기반으로 동작하게 됩니다. 따라서 @Transactional이 붙은 클래스는 프록시를 생성하기 위해 기본적으로 상속 가능한 형태여야 합니다. 그러나 record 클래스는 자바 14부터 도입된 레코드 기능으로, 기본적으로 final로 선언되어 있어 상속이 불가능합니다. 그래서 인텔리제이에서 해당 경고 메시지를 출력하는 것입니다.

일반적으로 이 경고는 무시할 수 있는 부류의 것이지만, 이는 record의 특성과 트랜잭션 관리 방식의 차이에서 기인한 것으로, 실제로 트랜잭션이 제대로 관리되지 못하는 상황을 피하기 위해서는 record 대신 다른 클래스를 사용하거나 트랜잭션 관리를 별도의 서비스 계층에서 담당하도록 리팩터링하는 것이 바람직합니다.

관련 주제를 다룬 유사한 질문과 답변을 참고하시면 더 깊이 있게 이해하실 수 있습니다:

이 내용이 JuNu님의 궁금증 해결에 도움이 되길 바랍니다. 추가적으로 더 궁금한 점이 있으면 언제든지 질문해 주세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

JuNu님의 프로필 이미지
JuNu

작성한 질문수

질문하기