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

좋은 백조님의 프로필 이미지
좋은 백조

작성한 질문수

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

스프링 JdbcTemplate

선생님 질문있습니다.

작성

·

185

0

선생님 이부분에서 @autowired 를 생략해도 된다고 하셨는데  만약에 생략하지 않는 다고 했을때 저 클래스 위에 @repository는 필요하지 않은건가요?

빈에 등록했을때 클래스랑 생성자위에 autowired도 안붙이고 @service나 @repository 생략이 가능하고 컨트롤러에만 @controller 과 @autowired가 필요하다고 저번강의에서 말씀하신건데 이 맥락에서 이해하면 되는걸까요?

그리고 두번째로 

jdbcInsert = new SimpleJdbcInsert(dataSource).withTableName("Student");

이소스코드는 simplejdbcinsert에 바로 dataSource를 인자로 넣었습니다. 그런데 선생님꼐서는 jdbctemplate을 인자로 넣어주셨습니다... 무슨차이인가요?

MapSqlParameterSource

그리고 선생님 이 인터페이스에 대해서 알고싶습니다 . 이 인터페이스가 구체적으로map이나 string 등 value가 들어가게되면 반환은 어떻게 되는지 궁금합니다.

답변 1

0

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

안녕하세요. 010님

선생님 이부분에서 @autowired 를 생략해도 된다고 하셨는데  만약에 생략하지 않는 다고 했을때 저 클래스 위에 @repository는 필요하지 않은건가요?

-> 이 부분이 어디인지요? 예제 코드로 자세히 설명해주시겠어요?

두번째 질문은 사실 같은 결과가 됩니다. dataSource를 넣어주시면 내부에서 JdbcTemplate을 만들어서 넣어줍니다. 그래서 두 방법중에 편한 방법을 사용하시면 됩니다.

MapSqlParameterSource는 인터페이스가 아니라 실제 구현 클래스입니다. 이 클래스를 사용하면 다음에서 설정한 내용을 insert sql의 파라미터로 사용할 수 있게 준비합니다.

Map<String, Object> parameters = new HashMap<>();

parameters.put("name", member.getName());

그리고 실제 사용할 때는 내부에서 루프를 돌면서 하나씩 꺼내서 sql 파라미터로 사용합니다.

감사합니다.

좋은 백조님의 프로필 이미지
좋은 백조

작성한 질문수

질문하기