강의

멘토링

커뮤니티

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

gusqhr999님의 프로필 이미지
gusqhr999

작성한 질문수

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

스프링 JdbcTemplate

findById와 findByName 차이점

작성

·

201

0

jdbc.Template.query 에서 인자값을 id값은 인자값으로 안넘겨주고 name은 넘겨줬는데 

조건 쿼리에서 ? 에 해당하는 값을 넘겨줘야 하는거 아닌지요? 왜 findById는 안넘겨줬나요?

또한가지는 JdbcTemplateMemberRepostory 에서 

public JdbcTempateMemberRepository(Datasource datasource)  부분에서 @Autowired선언은 생성자 하나면 안해줘도 된다고 해서 안해주셨고..

그런데 자바코드로 configuration 해주는 SpringConfig소스에서 보면 왜 그곳에서 또 DataSource를 @Autowired해주고 그 datasource 입력받은 값으로

@Bean

public MemberRepository memberRepository(){

이하부분에서 return new JdbcTeamplateRepostiry(datasource)

이부분에 datasource로 인자로 넣어줬나요? 안넣어주고 원래 JdbcTemplateMemberRepository 부분에서 이미 autowired되어있는데 말이죠..이해가 안가네요

답변 1

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. gusqhr999님

jdbc.Template.query 에서 인자값을 id값은 인자값으로 안넘겨주고 name은 넘겨줬는데 

조건 쿼리에서 ? 에 해당하는 값을 넘겨줘야 하는거 아닌지요? 왜 findById는 안넘겨줬나요?

-> 9:30을 참고해주세요^^

두번째 질문하신 부분은 dataSource를 외부에서 주입할 수 있다는 것을 보여드리는 코드입니다.

지금은 SpringConfig에서 dataSource를 받아서 JdbcTemplateMemberRepository에 직접 주입하고 있습니다. 이렇게 직접 주입해도 되고, 말씀하신 것 처럼 직접 주입 받지 않고, @Autowired로 주입 받아도 됩니다. 여러가지 방법이 가능합니다.

그런데 여기서 JdbcTempalteMemberRepository를 @Bean을 사용해서 수동으로 스프링 빈으로 등록하는데, dataSource가 생성자의 필수 파라미터 이기 때문에 SpringConfig에서는 dataSource를 꼭 받아와서 넣어주어야 합니다.

감사합니다.

gusqhr999님의 프로필 이미지
gusqhr999

작성한 질문수

질문하기