작성
·
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 파라미터로 사용합니다.
감사합니다.