Imagen Header Un Blog Mas Jordi Abad

Generar identificadores únicos universales en Java

random_numbers

En ocasiones necesitamos generar códigos identificadores únicos en nuestras aplicaciones. En un primer momento, si disponemos de una base de datos, podemos pensar en acceder a ella, crear, por ejemplo, una secuencia y recuperar un nuevo valor de esta secuencia desde nuestro programa. Ahora bien, ¿qué sucede cuando no disponemos o simplemente no queremos acceder a la base de datos? ¿Podemos generar un valor único y distintivo en Java?

Hasta la versión 1.5 de Java existían proyectos que se encargaban de esto mediante diversas implementaciones. Así, teníamos el Apache Commons ID project y el Java UUID Generator (JUG) project, por mencionar los más populares.

Pues bien, andaba yo estos días buscando una solución cuando he descubierto que en la versión 1.5 de Java se ha incluido la dentro del paquete util la clase UUID que nos permite precisamente esto: generar UUID‘s (Universally Unique Identifier) de manera estandarizada.

Obtener un UUID es ahora tan sencillo como escribir lo siguiente:

public class generadorUUID {

public static String crearUUID() {

return java.util.UUID.randomUUID().toString();
}

}

Y yo rompiéndome los sesos en algoritmos raros…


8 Comentarios por lo menos ...

Pues no está de más saberlo. Yo solía tirar de la clase BigInteger y hacer algún hash para “asegurarme” (siempre probabilísticamente hablando) que fuera un identificador único.

De todas formas, el proyecto en el que trabajo funciona por ahora sobre Java 1.4.2, así que otra vez será ;-)

Comentario publicado el 27 noviembre 2006 10:00 pm

Ok, Alberto. Me alegro de que te haya servido, por lo menos aunque haya sido a nivel teórico. Siento que no puedas llevarlo a la práctica :(

De todas maneras, ¿le has dado algún vistazo a esos proyectos que ya existen para versiones anteriores a la 1.5?. No están nada mal.

Comentario publicado el 27 noviembre 2006 11:01 pm

Pues… si te digo la verdad no los he mirado, cuando lo he necesitado ha sido para algo “menor”, ya que en la mayoría de sitios importantes donde necesitamos identificadores únicos ya se encarga Hibernate :-)

Comentario publicado el 28 noviembre 2006 02:09 am

Alberto,

El hecho de delegar a Hibernate la generación de identificadores únicos puede comportarte problemas.

Dale un vistazo a este artículo de OnJava: Don’t Let Hibernate Steal Your Identity

Comentario publicado el 28 noviembre 2006 09:47 am
5. JOSELUIS

PODRIAN DARME UN EJEMPLO PRACTICO DE UUID, PORQUE LA VERDAD NO LO ENTIENDO

Comentario publicado el 11 febrero 2009 06:39 am
6. ivan

disculpa, de casualidad, esta muy bueno el codigo, pero lo mio es un proyecto pequeño, quisiera unos identificadores mas cortos, sabes como hacerlo?

Comentario publicado el 29 noviembre 2009 02:13 am
7. net55588

trunca el string que generea la clase x)

Comentario publicado el 20 diciembre 2012 04:40 pm
8. Elena

Muchas Gracias!!! Andaba buscando precisamente un método fácil para la generación de claves únicas.

Comentario publicado el 7 julio 2016 10:50 am
(required)
(will not be published) (required)
(opitional)

Suscripción

Categorías

Cifras

  • 725 artículos
  • 2,574 comentarios
  • 1,074 usuarios
  • 67 enlaces