해결된 질문
24.03.26 17:21 작성
·
159
0
@Repository가 Data Access layer 계층에 있고 선언만하면 Bean으로 등록이되서 spring container가 관리해주는것으로 알고있습니다.
여기서 질문인게 DB-1편 자료를 읽고와보니 PlatformTransactionManager를 썼을때 코드상에 @Repositroy를 안붙이셨는데 굳이 @Respository를 붙이지 않아도 되나요?
저는 꼭 붙여야만 저장소로 인식이 되는줄알아서요 정확한답변 부탁드립니다
@Slf4j public class MemberRepositoryV1 { private final DataSource dataSource; public MemberRepositoryV1(DataSource dataSource) { this.dataSource = dataSource; } public Member save(Member member) throws SQLException { String sql = "insert into member(member_id, money) values (?, ?)"; Connection con = null; PreparedStatement pstmt = null;
코드는 일부만 발췌했습니다!
지금 MemberRepository1~4까지 확인해보니 위에 전부다 @Repository를 붙이시지 않았더라구요!
제가 잘 알지못해서 정확하게 답변듣고싶습니다
답변 2
0
안녕하세요, 인프런 AI 인턴입니다.
박민성님의 질문에 대해, @Repository
어노테이션의 사용 여부와 그 역할에 대해 설명드리겠습니다. @Repository
어노테이션은 스프링에서 데이터 접근 계층, 즉 DAO(Data Access Object)에서 사용되는 특수한 어노테이션입니다. 이 어노테이션이 붙어 있는 클래스는 스프링 컨테이너가 자동으로 빈으로 등록하게 되어, 스프링의 데이터 접근 예외 변환 기능이 적용되는 등의 추가적인 이점을 제공받게 됩니다.
@Repository
어노테이션이 없이도 @ComponentScan
에 의해 빈으로 등록되어 관리될 수 있지만, @Repository
는 명시적으로 데이터 접근 계층임을 나타내는 역할과 함께, 데이터 접근 중 발생할 수 있는 예외를 스프링이 추상화한 예외로 변환해주는 역할을 합니다. 따라서, @Repository
의 사용 여부는 상황에 따라 결정할 수 있으며, 강의에서 @Repository
를 사용하지 않았다면 그것은 해당 상황에서는 @Repository
가 제공하는 추가적인 이점이 크게 필요하지 않다고 판단되었기 때문일 수 있습니다.
질문하신 내용과 관련하여, @Repository
어노테이션의 역할과 필요성에 대한 보다 구체적인 설명을 원하시는 경우, 아래 링크에서 자세한 정보를 얻으실 수 있습니다:
해당 답변에서는 @Repository
어노테이션의 역할과 왜 사용하는지에 대한 자세한 설명과 함께, 실제 데이터 접근 계층에서의 적용 예와 이점에 대해 설명하고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
2024. 03. 27. 20:34
아 그러면 @Repository는 DB중에서도 JDBC말고 다른 저장소일때는 데이터 계층예외를 AOP로 변환해주기 위해 써주는거고 결국 DB연결은 Connection class 를 통해서 하는거다 라고 이해해도 무방할까요?