IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Web en Java Discussion :

Création et gestion d'une table en base de données


Sujet :

Développement Web en Java

  1. #1
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut Création et gestion d'une table en base de données
    Bonjour.

    Bon, c'est compliqué à expliquer.
    Via un fichier Excel, importé depuis une interface utilisateur, est-il possible de créer une nouvelle table sachant qu'aujourd'hui, je ne connais pas les champs (ni les types ni le nombre) pour un import qui se fera peut-être dans 3 jours ou même dans un an et qu'il serait possible d'en avoir plusieurs ?

    Avec mes connaissance, on a un JavaBean pour une table. Je ne peux pas créer un Java Bean "à la volée" sans passer par le code (l'utilisateur ne connaissant rien en JEE).
    Sachant aussi qu'il faut ajouter des liens avec les tables déjà existante.

    On prévoit une base postgreSQL en utilisant Hibernate.

    Je ne sais pas si je me suis bien fait comprendre.

    Est-il préférable de partir sur une autre techno (node.js, php, ...) ?


    Merci d'avance pour votre aide.

  2. #2
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 320
    Points : 3 740
    Points
    3 740
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    Si ton besoin est de créer une table dans une base relationnelle à chaque fois que l'utilisateur upload un fichier Excel quelconque alors ton besoin n'est pas du tout conventionnel ... et bien que possible je dirais qu'une base de donnée relationnelle n'est pas du tout adapté pour ce besoin sauf si tu travailles avec des outils de stats qui ne peuvent que se connecter à une base relationnelle. Pour ton programme en Java tu n'auras pas besoin de JPA/Hibernate mais plutôt de JDBC pour la création des tables, et aussi la librairie Apache POI pour analyser ton fichier Excel.

    A+
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  3. #3
    Membre actif
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2012
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 170
    Points : 234
    Points
    234
    Par défaut
    Bonjour,

    Comme l'as si bien dit Gugelhupf, ce que tu souhaites faire n'est pas conventionnel.
    Tu pourras tout de même faire ce que tu veux en construisant des requêtes de création et d'insertion de données dynamiquement et en passant par JDBC si tu analyse le fichier en prenant les headers mais tu n'auras pas une idée claire sur les types.

    Je pense que le(s) module ou l(es)'interface qui permettra à un utilisateur d'uploader l'excel te donneront une idée sur les données qui seront éventuellement dans le fichier,ce qui te permettra de créer les tables à l'avance et d’insérer les champs existant dans le fichier et laisser les autres null.

    Ceci te permettra d'avoir un modèle relationnel correcte pour tes tables préalablement créées.
    Il va donc falloir que tu etudie plus serieusement le fonctionnel de cette tache et voir comment faire un travail correct car les risques encourus sont les suivants (par exemple):

    -Création de n tables identiques au lieu de n tuple dans la même table (si jamais il y a plusieurs upload du même fichier ou d'un fichier ayant le même squelette avec des données différentes ).

    -Si tous tes fichiers sont liés et doivent alimenter la même table il faudra retrouver toutes les tables pour afficher un recap(par exemple) au lieu d'interroger la même table.

    Bonne reeflexion et bon courage.

  4. #4
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2013
    Messages
    269
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 269
    Points : 434
    Points
    434
    Par défaut
    Bonjour,
    la question à surtout se poser est quelle est la finalité de ces données ? S'il ne s'agit ensuite que de la restitution, la persistance en bdd n'est peut être pas la solution idoine et transformer ce fichier Excel par exemple en JSON ou XML te permettra aisément de le persister avec ses spécificités et le restituer facilement.

  5. #5
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut
    Bonjour à tous et merci pour vos réponse.

    Désolé pour mon absence mais j'vais un titre de dév à préparer et passer .

    Le travail présenté dans le premier message était mon projet de stage.
    Aujourd’hui, c'est la continuité post formation.

    Pour le stage, le périmètre de travail avait était réduit. Maintenant, il revient à l'origine. Donc, ma complexité et mon sujet revient sur le tapis et c'est pourquoi, j'ai besoin d'expert J2EE (d'ou ma présence ici).

    Avec mon collègue (de formation avant et de travail aujourd’hui), on est un peut perdu sur la marche à suivre dans notre projet.

    Vis à vis du projet de formation, nous pensons qu'il faut reprendre une grosse partie du code car pas adapté à la difficulté du projet.

    Le demandeur de l'application étant un client, il demande beaucoup de chose sans en connaitre la complexité.

    Je reviens sur mes explications de la demande client :
    • le client à plusieurs prestation à faire. Le tout avec des données d'une très gosse base de données de l’entreprise dont il est sous traitant (pas d’accès possible à cette base de données).
    • le client extrait des données de cette base sur un fichier Excel. Un fichier Excel par prestation donc, si 10 prestations, 10 fichiers Excel mis à jours plusieurs fois par jours (tache effectué par le client).
    • Aucun des fichiers Excel n'est formaté de la même façon (nbr de colonne différent, intitulé différent, ...).
    • le but est d'avoir une application complètement configurable qui permet de gérer les dossier. Pour le traitement d'un dossier on a un affichage d’un partie des informations du fichier Excel qui sont importées dans une table et des saisies complémentaires saisies dans une autre table (car un dossier peut revenir plusieurs fois dans des infos différentes à saisir).

    Petite explication de l'utilisation :
    • un utilisateur ayant les droits nécessaires, arrive sur une page de configuration de la prestation.
      • il sélectionne différentes infos qui sont en base (pays, site, ...) puis saisi le nom de cette prestation
      • il va pouvoir créer des ensemble d'éléments (un éléments étant une ligne de la table du fichier Excel) avec le nom plus quelques autres infos.

    • Une fois la prestation configurer, il va pouvoir configurer les ensembles
      • quel élément vas dans quel ensemble d'éléments (exemple : réf commence par 13 vas dans l’ensemble A, contient 32 -> ensemble B, ...)
      • les attributs des éléments à afficher et définir les saisies complémentaires.


    Comme précisé précédemment, je ne vois pas comment faire une classe JavaBean pour chacun des fichiers, ne sachant pas comment ils vont être structurés donc difficile à travailler les données.
    On ne connais rien des fichiers Excel.

    En gros une application qui permet de configurer des sous applications avec des données complètement différentes.

    Je suis pas sur que mes explications soit très explicites.

    On en vient à ce poser la question du choix de la techno (peut être plus facile en PHP ou autre).

    Des idées SVP sur le structure de la BDD, la méthodologie à avoir, bref n'importe quoi ??

    Merci d'avance pour votre aide pressurise.

  6. #6
    Membre actif
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2012
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 170
    Points : 234
    Points
    234
    Par défaut
    Bonjour,

    Il est clair que tu auras de l'aide ici.

    Mais avant tout il va falloir que tu penses et travaille ta conception ne serait ce qu'un petit peu pour faciliter la tache aux gens qui veulent t'aider et qui n'ont souvent pas trop de temps.

    le client à plusieurs prestation à faire. Le tout avec des données d'une très gosse base de données de l’entreprise dont il est sous traitant (pas d’accès possible à cette base de données).
    A ce niveau tu vas commencer à perdre tes lecteurs. qui est le client/prestataire je pense que dans ta phrase c'est la même entité????

    si tu commence ta conception tu comprendras de quoi je parle.

    (pas d’accès possible à cette base de données).
    le client extrait des données de cette base sur un fichier Excel
    j'ai rien compris??....

    réf commence par 13 vas dans l’ensemble A, contient 32 -> ensemble B,
    Je pense que ce n'est pas comme cela que ca se passe: on travaille avec des codes ou des types et non pas avec des "contient ou commence par" car cela peux changer avec le temps et te poser des gros problemes.... Mieux vaut directement faire saisir l'ensemble à ce stade!!

    Bonne reflexion et conception pour nous faciliter la compréhension de ton problème tu auras ensuite bcp de réponses je pense
    à bientot.

  7. #7
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut
    Citation Envoyé par johnlobs Voir le message
    Mais avant tout il va falloir que tu penses et travaille ta conception ne serait ce qu'un petit peu pour faciliter la tache aux gens qui veulent t'aider et qui n'ont souvent pas trop de temps.
    Faut avouer que c'est pas facile à expliquer


    Citation Envoyé par johnlobs Voir le message
    A ce niveau tu vas commencer à perdre tes lecteurs. qui est le client/prestataire je pense que dans ta phrase c'est la même entité????
    Le client (Notre client) à plusieurs prestations pour plusieurs client à lui. Nous faisons l’application pour notre client qu'il utilisera pour toutes ses prestations.
    Éventuellement, pour facilité , je vais appeler notre client "Toto" et l'entreprise dont il est sous-traitant "Arthur" .

    Citation Envoyé par johnlobs Voir le message
    si tu commence ta conception tu comprendras de quoi je parle.
    La conception est déjà commencé mais des modifs nous sont demandées et c'est là que nous bloquons un peut .

    Citation Envoyé par johnlobs Voir le message
    Citation Envoyé par FCL31
    (pas d’accès possible à cette base de données).
    le client extrait des données de cette base sur un fichier Excel
    j'ai rien compris??....
    Toto accède à une base de données de Arthur dont nous n'avons pas accès mais nous lui avons mis en place une base de données spécifique à notre application.
    Dons Toto récupère des données d'Arthur sous forme de fichier .xlsx que nous importons dans sa base.

    Citation Envoyé par johnlobs Voir le message
    Je pense que ce n'est pas comme cela que ca se passe: on travaille avec des codes ou des types et non pas avec des "contient ou commence par" car cela peux changer avec le temps et te poser des gros problemes.... Mieux vaut directement faire saisir l'ensemble à ce stade!!
    Je sais bien mais c'est Toto qui le veux comme ça.

    Citation Envoyé par johnlobs Voir le message
    Bonne reflexion et conception pour nous faciliter la compréhension de ton problème tu auras ensuite bcp de réponses je pense
    à bientot.
    J’espère déjà que mes commentaire aurons facilités un peut plus la compréhension.

    Merci d'avance

  8. #8
    Membre actif
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2012
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 170
    Points : 234
    Points
    234
    Par défaut
    Bonjour,

    La conception est déjà commencé mais des modifs nous sont demandées et c'est là que nous bloquons un peut .
    Je visualise bien ton problème,c'est malheureusement le fameux duel fonctionnel/technique;à toi de recadrer ton client et lui faire des propositions qui te faciliteront le travail et lui offriront un satisfaction fonctionnelle.

    En tout cas ,en ce qui me concerne je n'arrive pas à modéliser ta prestation qui reste floue.je m'explique:

    si tu ne connais pas la nature de la prestation que ton client peut offrir car elle dépend des données des fichiers excel,c'est un peu anormal.
    Dans ce cas tu auras une prestation avec id,nom ,libelle et une description qui contiendra tes info excel sous forme de chaîne de caractère mais c'est pas top.

    Par contre,si tu as déjà la liste des prestations offertes par ton client ,alors tu peux avoir une idée sur les infos à extraire par prestation et dans ce cas tu sera en stratégie single table avec des données nulles si elle ne sont pas contenues dans ton fichier excel(concernant les infos) et pour les prestations tu aura ton discriminator qui différenciera tes prestations.Il faudra donc travailler et préparer les formats excel à recevoir

    Je ne sais pas si dans ton cas une mapped superclass peut faire l'affaire ....?

    En tout cas si le choix va vers une solution abstraite où tu ne connais pas ce qui doit être créé, il va falloir extraire les donnée de ton Excel puis créer la table dont tu as besoin pour ensuite créer l'entité qui lui correspond et qui va hériter de ta superclass qui aura les méthodes adéquates .Dans ce cas tu t'attaques a l'elaboration d'un module dans ton application qui sera identique à ça que fait spring roo ou bien jHipster dont tu devra maîtriser le fonctionnel; je ne sais pas si ces deux outils offrent leurs fonctionnalités sans IHM.

    Je te propose de nous faire part de ta conception qui sera sans doute beaucoup mieux que des phrases car je sens que je commence peut être à m'eloigner de ton besoin.

    Au plaisir de te lire.

    Bon courage.

  9. #9
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 934
    Points : 4 347
    Points
    4 347
    Par défaut
    Au moins 2 solutions pour ne pas devoir créer de tables à chaque importation de fichier Excel :

    Passer par un meta-modèle générique qui décrira le contenu des fichiers importés, ensuite soit
    1. les données étant stockées dans une ou plusieurs tables spécialisées, plusieurs modèles possibles

    2. Importer le fichier Excel sous forme XML dans un SGBD qui supporte des fonctions XML sérieuses, ORACLE ou SQL Server par exemple
    inconvénient : disposer d'un tel RDBMS et avoir les compétences XML nécessaires, développer les fonctions et procédures stockées pour communiquer avec le client Java (un ORM ne servira à pas grand chose pour cette partie)

    Avantage principal : ne pas devoir donner des droits spécifiques à l'utilisateur DB qui sera utilisé dans le web tiers (c'est souvent un no-go dans de nombreuses organisations)

Discussions similaires

  1. Gestion d'une table de base de données avec JCombox
    Par cotede2 dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 29/10/2009, 17h25
  2. Sauvegarder un enregistrement dans une table de base de données
    Par souha2008 dans le forum Bases de données
    Réponses: 4
    Dernier message: 20/05/2008, 18h43
  3. taille d'une table et base de données sql server
    Par debutantasp dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 09/01/2008, 02h37
  4. [VB.NET] Comment créer une table dans base de données ?
    Par ptitesouris dans le forum VB.NET
    Réponses: 3
    Dernier message: 03/05/2006, 09h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo