EJB Entity : mapping O/R de String
Bonjour,
J'ai une question qui me parait bête mais je ne trouve pas de réponse...
En base de donnée, un varchar2 doit toujours être initialisé avec sa taille maximale alors qu'un String en java n'en a pas (dans les fait elle en a une mais il est inutile d'en tenir compte dans 99.999999999% des cas...).
Donc comment garantir l'intégrité des données. Si je propose un TextField pour modifier une chaine dans l'UI j'aimerais bien empêcher l'utilisateur de rentrer plus de caractère que mon unité de persistance ne peut en stocker réellement (donc la DB qui est derrière). Mais au niveau du code java l'Entity ne me renvoie qu'un String... je n'ai pas cette information. Je pourrais stocker pour chaque champs la longueur max dans les paramètre des champs (je stocke de toute façon des paramètres liés aux champs, comme le format d'affichage, le nom du label par langue, ...), mais je n'aurais rien qui me garanti que ce paramètre est inférieur ou égal à la taille du varchar2 en DB... (pas de liaison).
Le seul moyen de contrôle que je vois c'est d'interroger la DB mais c'est éthiquement inacceptable car tout l'intérêt de l'unité de Persistance disparait puisqu'on se retrouve avec un code lié à la DB...