SpringFramework 2.5의 릴리즈에서 많은 부분이 추가/개선되었지만, SpringJDBC에서도 몇가지 개선/추가가 이루어졌다.

우선 SimpleJdbcTemplate에서 SqlParameterSource의 사용과 SimpleJdbcInsert의 추가가 아닐까 싶다.

SimpleJdbcTemplate는 Java5의 varargs와 autoboxing을 지원하여 (특히 목록을 얻어오는 퀴리의 경우) 캐스팅을 별도로 고민 할 필요가 없긴 한데.

문제는 복잡한 퀴리의 경우 classic placeholder ('?')으로는 불편해서 결국 NamedParameterJdbcTemplate으로 작성하곤 했는데.

SimpleJdbcTemplate에서 SqlParameterSource가 가능하게 되었다.

  1.  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
  2. );         

 

사실 SimpleJdbcTemplate이 추가될때 추가되어야 할 기능일지도. (...)

그리고 추가된 부분이 SimpleJdbcInsert,SimpleJdbcCall이다. stored procedure을 잘 사용하지 않아서 패스. SimpleJdbcInsert는 QueryObject[PoEAA(316)]패턴과 비슷하게 쿼리를 객체화 할수 있다고 볼수가 있는데. (물론 접근 스타일은 다르지만.)

  1. jdbcInsert = new SimpleJdbcInsert(this.dataSource).withTableName("boards");
  2. 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);

빈의 프로퍼티과 테이블 이름이 잘 맞는다면.

  1. jdbcInsert = new SimpleJdbcInsert(this.dataSource).withTableName("boards");
  2. SqlParameterSource parameters = new BeanPropertySqlParameterSource(board);
  3. jdbcInsert.execute(parameters);

 

 데이터베이스의 시퀀스 키를 얻을수 있지만(executeAndReturnKey(),usingGeneratedKeyColumns()). PgSql에서 지원하지 않는 데이터베이스라고 나와서 패스. -_- (org.springframework.jdbc.core.metadata에 PostgresqlCallMataDataProvider가 없다.)

SimpleJdbcUpdate나 SimpleJdbcSelect는 없고 단지 SimpleJdbcInsert만 나온 이유가 Insert 문이 가장 생성하기 쉽고.

또 개인적인 경험에 따르면 가장 작성할때 오타가 가장 많이 나는 퀴리인 듯 하다. Update문의 경우 key-value 스타일이기 때문에 Insert문보다는 작성하기 수월한 면이 있다는 걸 부정할수 없겠다.

그리고 Spring이 버젼업하면 SimpleJdbcUpdate나 SimpleJdbcSelect가 나와서 ORM이 없는 어둠의 장소,약속의 저편...에도 광명이 찾아오지 않을까? :-)

 

 

 

 

 

7 Responses to “Spring2.5에서 SpringJDBC 사용하기 ”

  1. anarch Says:
    test~
  2. gEEkInsIdE Says:
    베타에 참여한 거? 할까 하다가 귀찮아서 안했는데…
  3. Says:
    한번 해봤어요.. :-)
  4. deepblue Says:
    ^^
  5. gEEkInsIdE Says:
    핫! deepblue님…;;;
  6. Says:
    핫! deepblue님… +_+
  7. deepblue Says:
    핫! ^^;;;;;;;;

Leave a Reply

Website

Email