-
Enum et UserType
Bonjour
J'aurais besoin de clarifications au sujet d'un problème que je rencontre.
J'ai consulté plusieurs livres et sites web et je n'arrive pas à comprendre pourquoi pour un type "Enum" j'ai besoin d'implémenter UserType puisque au sein d'Hibernate j'utilise l'annotation
Code:
@Enumerated(EnumType.String)
Bref quel est l'intérêt d'ajouter autant de code puisque cette annotation le fait toute seule?
Merci
-
Si je ne me trompe pas si tu met @enumerated cela te sauvegarde directement ton enum en base de donne sur une colonne de type string donc si tu as:
public enum ExampleEnum {
CONST_A, CONST_B
}
Dans la base tu retrouve une colonne de type text avec comme valeur CONST_A et CONST_B
En revanche si tu utilise le usertype tu peux definir comment sauver ton enum
Si tu as maintenant
public enum ExampleEnum {
CONST_A(1), CONST_B(2)
}
En base de donnee tu peux vouloir sauver uniquement 1 ou 2 et pour cela tu aura besoin de declarer un usertype et que ton champs dans ton entite soi defini du meme type. Donc si tu utilise @enumerated il faut que dans ton entite tu es un champs
private ExempleEnum exempleEnum;
Si tu as mis @enumerated et un champs
Private String exempleEnum;
Tu aura besoin d un usertype pour savoir comment convertir ton enum en string...
Je te conseille de toujours utiliser si possible le nom de ton enum en base car si tu a 20 constantes dans ton enum et que tu geres beaucop d enum dans ton application, quand tu va jouer des requetes en base tu ne saura plus ce que veux dire le statut 9 ou le statut 8, tu seras oblige de jongler entre le code et la base, ce qui n es pas toujours rapide...
En esperant t avoir repondu correctement sinon quelqu un d autre pourra peut etre t aider.
Bon courage.