Mapping champs de fichiers csv avec champs de la table de bdd

Fermé
kariel1 Messages postés 29 Date d'inscription mardi 16 juillet 2013 Statut Membre Dernière intervention 5 juin 2014 - 9 mai 2014 à 17:54
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 9 mai 2014 à 18:44
Bonjour,
je suis en train de développer une application qui permet d'importer un fichier format .csv, le lire et enregistrer ses données dans une base de données MySQL.
Je travaille avec Hibernate, struts2, et spring.
Mon problème est le suivant:
comment faire le mapping entre les champs du fichier (par exemple firstName, lastName, dateOfBirth) et les champs de la table de la base de données (par exemple Nom, Prenom, DateDeNaissance).
Des idées pour commencer?
Merci d'avance.
A voir également:

2 réponses

kariel1 Messages postés 29 Date d'inscription mardi 16 juillet 2013 Statut Membre Dernière intervention 5 juin 2014
9 mai 2014 à 18:35
En cherchant un peu, j'ai tombé sur la openCSV, je l'ai utilisé pour la lecture du fichier, et j'ai compris que je peux faire le mapping avec les classes : CsvToBean et ColumnPositionMappingStrategy.
des idées ou exemples d'utilisation de ces classes.
Merci :)
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
9 mai 2014 à 18:44
Bonjour,

Il n'y a pas de INSERT en JPA, donc pas en Hibernate non plus (sauf si les données proviennent d'une autre table mais ce n'est pas ton cas).
Par contre tu peux le faire avec Spring, mais dans ce cas fait toutes tes bases de données en Spring, et Hibernate ne sert plus à rien... car pour être cohérent il ne faut pas mélanger deux framework pour faire la même brique (ici la DAO).

Ici je pense que le mieux est de faire une requête native avec Hibernate, mais il faut bien garder à l'esprit que c'est une utilisation contraire à l'esprit du framework qui n'est censé faire que de la récupération de données, pas de la création.

EntityManager em;

Query query = em.createNativeQuery("INSERT INTO "
    +" Personne (Nom, Prenom, DateDeNaissance) "
    +" VALUES (?, ?, ?);");
query.setParameter(1, person.getLastName());
query.setParameter(2, person.getFirstName());
query.setParameter(3, person.getDateOfBirth());

int n = query.executeUpdate();
0