java - metodos - namedparameterjdbctemplate example
NamedParameterJdbcTemplate vs JdbcTemplate (2)
No hay un rendimiento de diferencia medible. El NamedParameterJdbcTemplate es una conveniencia que le permite usar parámetros con nombre. Si es realmente curioso, eche un vistazo al código fuente que está disponible para su descarga. Encuentro que leer el código fuente me da más confianza en las respuestas que obtengo en los foros.
Soy un principiante de Spring3.x, estoy aprendiendo el soporte de Spring DAO. Quiero saber la diferencia entre NamedParameterJdbcTemplate y JdbcTemplate. Cuál es el mejor por rendimiento. Y cuándo ir a NamedParameterJdbcTemplate y cuándo ir a JdbcTemplate. Su respuesta ayudará mucho a los principiantes como yo.
Cuando usas JdbcTemplate, ¿le das SQL que tiene un ?
marcador de posición para cada parámetro que desee sustituir en el SQL. Cuando se asignan parámetros en el código, se deben pasar argumentos en una matriz y se usan en el orden en que aparecen en la matriz, como este:
Object[] args = new Object[] {"x", "y"};
String sql = "select * from foo where a = ? and b = ?";
jdbcTemplate.query(sql, args, resultSetExtractor);
entonces el SQL que se ejecuta es select * from foo where a = ''x'' and b = ''y''
.
NamedParameterJdbcTemplate le permite asignar nombres a los marcadores de posición de parámetros y pasarlos en un mapa para que la plantilla pueda hacer coincidir los nombres de los mapas con los marcadores de posición. Entonces su código se vería así:
String sql = "select * from foo where a = :mya and b = :myb";
Map<String, Object> argMap = new HashMap<String, Object>();
argMap.put("mya", "x");
argMap.put("myb", "y");
namedParameterJdbcTemplate.query(sql, argMap, resultSetExtractor);
generar el mismo SQL que el primer ejemplo (y ejecutar la consulta es la parte que requiere mucho tiempo, el rendimiento de la inserción del argumento no es un problema).
La idea es que hacer coincidir los argumentos por nombre es menos propenso a errores que tener que especificarlos en un orden particular. En una aplicación de la vida real, típicamente SQL se almacena en un archivo separado del código DAO, y puede ser fácil obtener accidentalmente los parámetros en el orden incorrecto.