en J2EE, UnBlogMas

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…

Escribe un comentario

Comentario

  1. 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á 😉

  2. 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.

  3. 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 🙂

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

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