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…
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á 😉
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.
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 🙂
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
PODRIAN DARME UN EJEMPLO PRACTICO DE UUID, PORQUE LA VERDAD NO LO ENTIENDO
disculpa, de casualidad, esta muy bueno el codigo, pero lo mio es un proyecto pequeño, quisiera unos identificadores mas cortos, sabes como hacerlo?
trunca el string que generea la clase x)
Muchas Gracias!!! Andaba buscando precisamente un método fácil para la generación de claves únicas.