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

kariel1 Messages postés 29 Date d'inscription   Statut Membre Dernière intervention   -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
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.

2 réponses

kariel1 Messages postés 29 Date d'inscription   Statut Membre Dernière intervention  
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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