SpringFramework 2.5의 릴리즈에서 많은 부분이 추가/개선되었지만, SpringJDBC에서도 몇가지 개선/추가가 이루어졌다.
우선 SimpleJdbcTemplate에서 SqlParameterSource의 사용과 SimpleJdbcInsert의 추가가 아닐까 싶다.
SimpleJdbcTemplate는 Java5의 varargs와 autoboxing을 지원하여 (특히 목록을 얻어오는 퀴리의 경우) 캐스팅을 별도로 고민 할 필요가 없긴 한데.
문제는 복잡한 퀴리의 경우 classic placeholder ('?')으로는 불편해서 결국 NamedParameterJdbcTemplate으로 작성하곤 했는데.
SimpleJdbcTemplate에서 SqlParameterSource가 가능하게 되었다.
- String sql = "SELECT id,title,content FROM boards "+
- "WHERE fl_public = :fl_public ";
- MapSqlParameterSource params = new MapSqlParameterSource();
- params.addValue("fl_public",fl_public);
- List<Board> list = this.simpleJdbcTemplate.query(sql,
- new ParameterizedRowMapper<Board>()
- {
public Board mapRow(ResultSet rs, int rowNum) - throws SQLException
- {
- Board b = new Board();
- b.setId(rs.getLong("id"));
- b.setTitle(rs.getString("title"));
- b.setContent(rs.getString("content"));
- return b;
- }
}, - params
- );
사실 SimpleJdbcTemplate이 추가될때 추가되어야 할 기능일지도. (...)
그리고 추가된 부분이 SimpleJdbcInsert,SimpleJdbcCall이다. SimpleJdbcCall은 stored procedure을 잘 사용하지 않아서 패스. SimpleJdbcInsert는 QueryObject[PoEAA(316)]패턴과 비슷하게 쿼리를 객체화 할수 있다고 볼수가 있는데. (물론 접근 스타일은 다르지만.)
- jdbcInsert = new SimpleJdbcInsert(this.dataSource).withTableName("boards");
- Map<String, Object> parameters = new HashMap<String, Object>();
- parameters.put("id",id);
- parameters.put("title", board.getTitle());
- parameters.put("content",board.getContent());
- jdbcInsert.execute(parameters);
빈의 프로퍼티과 테이블의 컬럼이름이 잘 맞는다면.
- jdbcInsert = new SimpleJdbcInsert(this.dataSource).withTableName("boards");
- SqlParameterSource parameters = new BeanPropertySqlParameterSource(board);
- jdbcInsert.execute(parameters);
데이터베이스의 시퀀스 키를 얻을수 있지만(executeAndReturnKey(),usingGeneratedKeyColumns()). PgSql에서 지원하지 않는 데이터베이스라고 나와서 패스. -_- (org.springframework.jdbc.core.metadata에 PostgresqlCallMataDataProvider가 없다.)
SimpleJdbcUpdate나 SimpleJdbcSelect는 없고 단지 SimpleJdbcInsert만 나온 이유가 Insert 문이 가장 생성하기 쉽고.
또 개인적인 경험에 따르면 가장 작성할때 오타가 가장 많이 나는 퀴리인 듯 하다. Update문의 경우 key-value 스타일이기 때문에 Insert문보다는 작성하기 수월한 면이 있다는 걸 부정할수 없겠다.
그리고 Spring이 버젼업하면 SimpleJdbcUpdate나 SimpleJdbcSelect가 나와서 ORM이 없는 어둠의 장소,약속의 저편...에서도 광명이 찾아오지 않을까? :-)
이 글은 스프링노트에서 작성된걸 가지고 티스토리에서 삽질했습니다.



이올린에 북마크하기
Prev
Rss Feed