DClick

Spring & JDBC


Twitter!

O Spring Framework facilita o trabalho com JDBC pois usufrui de IoC para eliminar o desenvolvimento baixo-nível. Se você não utiliza frameworks ORM, esta API se torna altamente recomendável. Segue comparação entre JDBC puro e utilizando o JdbcTemplate do Spring:


Exemplo 1: Criando uma lista de objetos utilizando JDBC puro

JAVA:
  1. PreparedStatement ps = connection.prepareStatement("Select name, email from t_users where status = ?");
  2. ps.setInt(1, new Integer(1));
  3.  
  4. ResultSet rs = ps.executeQuery();
  5. List<User> users = new ArrayList<User>();
  6.  
  7. while (rs.next()) {
  8.     User user = new User();
  9.     user.setName(rs.getString("name"));
  10.     user.setEmail(rs.getString("email"));
  11.     users.add(user);
  12. }
  13.  
  14. return users;

Além de ser obrigatório tratar open/close de conexões.

Exemplo 2: Criando uma lista de objetos utilizando Spring & JDBC

Devemos utilizar a classe JdbcTemplate, injetando o dataSource atual (new JdbcTemplate(dataSource)). Além disso, devemos fazer uma nova classe que implemente a interface RowMapper para criar o objeto. Em seguida podemos criar uma lista de objetos com apenas uma linha de código:

JAVA:
  1. return (List<User>) jdbcTemplate.query("Select name, email from t_users where status = ?",
  2.      new Object[] { new Integer(1) }, new UserRowMapper());

Exemplo de RowMapper:

JAVA:
  1. public class UserRowMapper implements RowMapper {
  2.     @Override
  3.     public Object mapRow(ResultSet rs, int numRow) throws SQLException {
  4.         User user = new User();
  5.         user.setName(rs.getString("name"));
  6.         user.setEmail(rs.getString("email"));
  7.  
  8.         return user;
  9.     }
  10. }

Referência completa: http://static.springframework.org/spring/docs/2.0.x/reference/jdbc.html

Compartilhe:

  • RSS
  • Twitter
  • del.icio.us
  • Facebook
  • MySpace
  • LinkedIn
  • Google Bookmarks
Por Bruno Fuster em 12/January/2009 | Comentar | Trackback


Other Languages:

Adicionar comentário

(requerido)
(requerido, não será publicado)