L'article initial me semble correct. Cependant, d'après les commentaires, il semble que quelques commentaires concernant les enums Java pourraient clarifier certaines choses.
Le type Enum en Java est une classe par définition, mais de nombreux programmeurs ont tendance à l'oublier, car ils l'associent plutôt à "une liste de valeurs autorisées" comme dans certains autres langages. C'est bien plus que cela.
Ainsi, pour éviter ces instructions de commutation, il peut être raisonnable de placer du code et des méthodes supplémentaires dans la classe enum. Il n'est presque jamais nécessaire de créer une "classe réelle de type enum" distincte.
Considérez également le point de la documentation - voulez-vous documenter la signification réelle de votre enum dans la base de données ? Dans le code source reflétant les valeurs (votre type d'enum) ou dans une documentation externe ? Personnellement, je préfère le code source.
Si vous souhaitez présenter les valeurs de l'enum sous forme d'entiers dans la base de données pour des raisons de rapidité ou autres, ce mappage doit également résider dans l'enum Java. Par défaut, vous obtiendrez un mappage chaîne-nom, et je m'en suis contenté. Il y a un numéro ordinal associé à chaque valeur de l'enum, mais l'utiliser directement comme mappage entre le code et la base de données n'est pas très intelligent, car ce numéro ordinal changera si quelqu'un réorganise les valeurs dans le code source. Ou ajoute des valeurs d'énumération supplémentaires entre les valeurs existantes. Ou supprime une valeur.
(Bien sûr, si quelqu'un change le nom de l'enum dans le code source, le mappage de la chaîne par défaut devient également aigre, mais il est moins probable que cela se produise accidentellement. Et vous pouvez plus facilement vous protéger contre cela si nécessaire en mettant un contrôle d'exécution et des contraintes de contrôle dans la base de données comme suggéré ici déjà. )