2010-10-03 14 views
7

Tengo una entidad en mi sistema, que naturalmente necesita un identificador para poder identificarlo de manera única. Suponiendo que la base de datos se utiliza para generar el identificador con Hibernate, utilizando la estrategia nativa, obviamente el código de la aplicación no tiene esta responsabilidad de asignar identificadores. Ahora, ¿puede una instancia de esa entidad considerarse válida antes de que se conserve y obtenga su identificador? ¿O debería usar alguna otra estrategia para asignar a mis entidades sus identificadores para que obtenga su identificador cuando se llama a su constructor?Entidad DDD y su identificador

Respuesta

6

Eso es un extenso tema, pero aquí hay dos posibilidades:

  • definir su hashCode() y equals(..) contratos basados ​​en business keys. Por ejemplo, para una entidad User, este sería el nombre de usuario, en lugar del ID generado automáticamente. Por lo tanto, podrá usar la entidad en colecciones antes de que se conserve

  • use UUID como clave principal y gestione la generación usted mismo. Ver this article por Jeff Atwood y this article que demuestra una manera de utilizarla con Hibernate

(Ya que mencionas DDD y de hibernación, echar un vistazo a this article mío)

+0

Gracias, creo que voy a ir con la segunda opción, generará identificadores yo mismo. –

+0

+1 para el artículo GUID –