Es una situación bastante común en nuestras aplicaciones que alguna entidad deba ser representada por una enumeración: por ejemplo, tipos, categorías, estado y cosas por el estilo.¿Cómo manejar la duplicación entre java enum y la tabla de la base de datos?
A menudo, hay condiciones o flujos en el código que usan los valores para decidir entre una acción u otra, por lo que los valores deben ser "conocidos" de alguna manera para la aplicación (es decir, debe poder referirse a una instancia específica para decidir en lugar de hacer referencia a la clase en un todo). Es por eso que utilizamos enumeraciones en lugar de solo una clase regular.
El problema es que estas entidades también necesitan ser almacenadas (o al menos referenciadas) en la base de datos, como campos de otras entidades. Usualmente creamos una tabla para cada entidad, para poder tener verificaciones de integridad referencial en estas columnas, y también que los datos tienen un "significado" solo en la base de datos sin la necesidad de consultar la enumeración para averiguar qué significa cada identificación. .
Idealmente, los datos para estas entidades se deben llenar a partir de los datos en la enumeración, pero hoy en día tenemos los valores duplicados en los scripts de inicialización de db.
Se vuelve un poco más complicado cuando se utiliza un ORM como Hibernate.
Me gustaría saber cómo otras personas manejan este tipo de situación.
No estoy del todo cómodo con la idea de tener una duplicación entre una enumeración y una tabla de base de datos, pero todavía no he encontrado una mejor solución.
Esto se ha preguntado muchas veces antes - mire los enlaces "relacionados" en el lado derecho –