Algunas dudas sobre el uso de RowMapper en JDBC en una aplicación Spring Framework

Estoy estudiando cómo ejecutar la consulta en una base de datos utilizando JDBC en Spring Framework.

Estoy siguiendo este tutorial:http://www.tutorialspoint.com/spring/spring_jdbc_example.htm

En este tutorial defino unaStudentDAO Interfaz que solo define el método CRUD que quiero.

Luego se define laEstudiante clase que es la entidad que deseo conservar en la tabla de la base de datos de Estudiantes.

Luego se define laStudentMapper clase que es una implementación específica deRowMapper interfaz que, en este caso, se utiliza para asignar un registro específico en elConjunto resultante (devuelto por una consulta) a unEstudiante objeto.

Entonces tengo elStudentJDBCTemplate que represente la implementación de miStudentDAO interfaz, en esta clase implemento el método CRUD que se definió en la interfaz.

Ok, y ahora tengo una duda sobre cómo elStudentMapper trabajo de clase: en esteStudentJDBCTemplate clase allí se define el método que devuelve la lista de todos los registros que se encuentran en la tabla de la base de datos de Estudiantes, este:

   public List<Student> listStudents() {
      String SQL = "select * from Student";
      List <Student> students = jdbcTemplateObject.query(SQL, 
                                new StudentMapper());
      return students;
   }

Como puede ver, este método devuelve un objeto de Lista de Estudiantes y funciona de la siguiente manera:

Lo primero que hace es definir la consulta quedevolver todo el registro en la tabla de la base de datos de estudiantes en la cadena SQL.

Luego, esta consulta se ejecuta mediante la llamada al método de consulta en el objeto jdbcTemplateObject (que es una existencia dePlantilla Jdbc Clase de primavera **

Este método toma dos parámetros: la cadena SQL (que contiene la consulta SQL que debe ejecutarse) y una nuevaStudentMapper objeto que toma elConjunto resultante objeto devuelto por la consulta y asigna su registro en un nuevo objeto de Estudiante

Leyendo aquihttp://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/jdbc/core/JdbcTemplate.html dice queEjecute una consulta dada el SQL estático, asignando cada fila a un objeto Java a través de un RowMapper.

Mi duda está relacionada con el hecho de que miStudentMapper mapear un registro ResultSet en un objeto de Estudiante usando elmapRow () Método, este es el código:

package com.tutorialspoint;

import java.sql.ResultSet;
import java.sql.SQLException;
import org.springframework.jdbc.core.RowMapper;

public class StudentMapper implements RowMapper<Student> {
   public Student mapRow(ResultSet rs, int rowNum) throws SQLException {
      Student student = new Student();
      student.setId(rs.getInt("id"));
      student.setName(rs.getString("name"));
      student.setAge(rs.getInt("age"));
      return student;
   }
}

Entonces, ¿quién llama a estomapRow ¿método? ¿Es llamado automáticamente por el Framework Spring? (porque en este ejemplo nunca se llama manualmente ...)

Tnx

Andrea

Luego, esta consulta se ejecuta mediante la llamada al método de consulta en el objeto jdbcTemplateObject (que es una existencia dePlantilla Jdbc Clase de primavera **

Respuestas a la pregunta(4)

Su respuesta a la pregunta