Ver Mensaje Individual
  #2 (permalink)  
Antiguo 09/07/2013, 08:30
Avatar de chuidiang
chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Duda simple sobre variable que no se resetea en app web

Hola:

Lo habitual es dejar que ese id lo cree la base de datos, bien con auto increment (MySQL) o bien con secuencias (Oracle, PostgreSQL).

Si no quieres dejar esa responsabilidad a la base de datos, la siguiente opción es la que comentas, consultar e incrementar en 1. No es necesario guardar ese id en base de datos, basta con hacer una consulta select max(id) from tabla;.
Pero tienes que asegurarte bien que sólo se hace la consulta una vez en el arranque, se guarda ese valor en una variable de programa accesible para todo el código que lo necesite y a partir de ahí se incrementa directamente la variable cuando haga falta. Si cada trozo de código de programa hace la consulta de ese id a la base de datos y hay varios hilos trabajando, puedes tener conflictos, ya que un segundo hilo podría leer el mismo valor que el primero si al primero no le ha dado tiempo a hacer el insert.

Finamente, otra opción es elegir como id algo aleatorio y que tengas cierta garantía que nunca se repite. Se suele usar UUID.randomUUID() que genera cosas como 550e8400-e29b-41d4-a716-446655440000 con un algoritmo que garantiza que es muy improbable que haya repeticiones, incluso aunque ejecutes en servidores distintos de la misma red. Está pensado para obtener ids únicos en entonos distribuidos y por eso quizás se matar "moscas a cañonazos" si solo tienes una aplicación en un solo servidor y una sola base de datos.

Se bueno.
__________________
Apuntes Java
Wiki de Programación