Bonjour à tous,
Je réalise un petit programme qui récupère des fichiers textes, les décodent et ensuite alimente une base. Pour l'exemple imaginons qu'il s'agisse d'une liste de personne, par exemple:
___________________________
Genre | Nom | Prenom | Pays
___________________________
Mr | Dupont|Jean |France
La base represente le fichier texte et est donc composée de plusieurs tables, deux dans notre cas: Personne et Pays
J'ai donc 2 entités Personne et Pays. Dans la classe Personne, j'ai un constructeur qui accepte du texte qui est ensuite décodé par cette meme classe. Dans ce décodage je détecte la colonne pays et je fais unqui ne manque pas de générer une exception de clé primaire en double...au bout du 2eme Français...(logique...
Code : Sélectionner tout - Visualiser dans une fenêtre à part New Pays("France"))
La question est donc: Comment organiser son code pour éviter ce genre de situation ?
Moi je vois 2 solutions, mais qui ne me plaisent pas:
1) Découpler Pays et Personne et avant de les assembler vérifier que l'objet Pays n'existe pas déjà en base, récuperer son id etc, etc...
2) Passer en parametre dans Personne l'entityManager et faire le check de l'existence du Pays dans la classe.
Je ne pense pas qu'il s'agisse des bonnes solutions. Mon cas est particulier car dans la plupart des applications ce cas n'arrive pas car les données d'entrée sont controlées par l'application (exemple on créé un user, et si dans le formulaire de création le pays n'existe pas, alors l'utilisateur doit d'abord créer un pays puis l'associer à la personne)
(Mon projet est sous Netbean 7, JDK 1.6, et EclipseLink)
Un petit coup de pouce de la communauté serait sympa !![]()
Partager