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

박민성님의 프로필 이미지

작성한 질문수

스프링 DB 2편 - 데이터 접근 활용 기술

급 @Repositroy 질문

해결된 질문

24.03.26 17:21 작성

·

159

0

@Repository가 Data Access layer 계층에 있고 선언만하면 Bean으로 등록이되서 spring container가 관리해주는것으로 알고있습니다.

 

여기서 질문인게 DB-1편 자료를 읽고와보니 PlatformTransactionManager를 썼을때 코드상에 @Repositroy를 안붙이셨는데 굳이 @Respository를 붙이지 않아도 되나요?

저는 꼭 붙여야만 저장소로 인식이 되는줄알아서요 정확한답변 부탁드립니다

123.png123.png@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

OMG님의 프로필 이미지

2024. 03. 27. 02:22

안녕하세요. 박민성님, 공식 서포터즈 OMG입니다.

@Repository 어노테이션의 누락과 관련하여 남기신 질문이군요 😀 예리하신 것 같습니다ㅎㅎ

다음 링크(클릭)의 영한님 답변을 참고해주세요 ^^

감사합니다.

박민성님의 프로필 이미지
박민성
질문자

2024. 03. 27. 20:34

아 그러면 @Repository는 DB중에서도 JDBC말고 다른 저장소일때는 데이터 계층예외를 AOP로 변환해주기 위해 써주는거고 결국 DB연결은 Connection class 를 통해서 하는거다 라고 이해해도 무방할까요?

OMG님의 프로필 이미지

2024. 03. 27. 21:24

네, 말씀하신대로 이해하셔도 틀린 내용은 없는것 같습니다 😀

0

인프런 AI 인턴님의 프로필 이미지

2024. 03. 26. 17:27

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

박민성님의 질문에 대해, @Repository 어노테이션의 사용 여부와 그 역할에 대해 설명드리겠습니다. @Repository 어노테이션은 스프링에서 데이터 접근 계층, 즉 DAO(Data Access Object)에서 사용되는 특수한 어노테이션입니다. 이 어노테이션이 붙어 있는 클래스는 스프링 컨테이너가 자동으로 빈으로 등록하게 되어, 스프링의 데이터 접근 예외 변환 기능이 적용되는 등의 추가적인 이점을 제공받게 됩니다.

@Repository 어노테이션이 없이도 @ComponentScan에 의해 빈으로 등록되어 관리될 수 있지만, @Repository는 명시적으로 데이터 접근 계층임을 나타내는 역할과 함께, 데이터 접근 중 발생할 수 있는 예외를 스프링이 추상화한 예외로 변환해주는 역할을 합니다. 따라서, @Repository의 사용 여부는 상황에 따라 결정할 수 있으며, 강의에서 @Repository를 사용하지 않았다면 그것은 해당 상황에서는 @Repository가 제공하는 추가적인 이점이 크게 필요하지 않다고 판단되었기 때문일 수 있습니다.

질문하신 내용과 관련하여, @Repository 어노테이션의 역할과 필요성에 대한 보다 구체적인 설명을 원하시는 경우, 아래 링크에서 자세한 정보를 얻으실 수 있습니다:

해당 답변에서는 @Repository 어노테이션의 역할과 왜 사용하는지에 대한 자세한 설명과 함께, 실제 데이터 접근 계층에서의 적용 예와 이점에 대해 설명하고 있습니다.

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