cual es mejor de las dos
hola a todos, espero me puedan colaborar con esta duda que tengo, lo que sucede es que tengo que insertar varios registros en una tabla y he encontrado dos formas de hacer pero no se cual de las dos es mas optima, a continuacion las expongo:
esta es la primera utilizando la funcion batch del jdbctemplate:
nivelEsc.getEspNivel() tiene una cadena de la siguiente forma: "01, 02, 03, 04, 05" por asi decirlo
la segunda forma es esta:
le agradezco mucho a la persona que me pueda colaborar..
muchas gracias
- Inicie sesión o regístrese para enviar comentarios
Re: cual es mejor de las dos
La mejor forma es la que haga exactamente lo que necesites. Se parecen mucho los métodos no parece cambiar mucho (según yo).
0_o
A mi parecer...
Que tal hendaviher
Yo no he usado
batchUpdate de JdbcTemplate,
Pero alguna vez usé
executeBatch() de Statement
Me parece que el concepto es el mismo:
Ejecutar varias sentencias de actualización de manera eficiente, cuando lo ocupé actualizaba cientos de registros en tablas y precisamente para esto se usa el batch, para agilizar el proceso.
Por lo que a mi parecer tu primera opción es la óptima, sólo que te recomendaría que hicieras pruebas de tu código, porque me llama la atención que en tu sentencia sql
colocaste al final de tu insert el signo de punto y coma (;)
El punto y coma te sirve para separar tus sentencias sql en programas cliente que lanzan consultas de prueba hacia una base de datos,pero dentro de tu código java ya NO es necesario, de hecho cuando lo vayas a montar en un server casi estoy seguro que te lanzará algún error por eso, sólo quítale ese punto y coma.
Saludos.
En principio debería de ser
En principio debería de ser batchUpdate, pero si estas insertando 1- 10 registros quizá no haya mucha diferencia. De todas formas mide el tiempo que se tarda uno y otro y saca tus propias conclusiones. Y nos cuentas! :)
La primera
Definitivamente la primera. Incluso sin contexto (porque no ofreces ninguno por cierto), si ese objeto
maneja internamente conexiones a la base de datos, tal parece que
hará todos los inserts con la misma conexión, mientras que
podría abrir una conexión, hacer el insert y cerrarla (o devolverla a un pool si hay uno). Pero aunque hubiera un pool de conexiones a BD,
seguramente tendrá que crear un PreparedStatement para cada insert, mientras que
puede reutilizar el mismo PreparedStatement para todos los inserts.