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

Persistance des données Java Discussion :

Accès aux données depuis une application web


Sujet :

Persistance des données Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 318
    Points : 81
    Points
    81
    Par défaut Accès aux données depuis une application web
    Je développe une application, où je me connecte à une base de données ( ça peut être Oracle, ou Teradata ) depuis mon application web , puis je cherche comment faire pour accéder aux tables dans la base.

    Je cherche aussi comment aussi comment faire pour comparer les tables source et cibles (qui sont dans la même BD) ... ( par exemple je choisis la tables personnes_sources avec la tables personne_cible ), puis j'accède aux champs respectives de ces tables pour les comparer ( nom de la table personnes_sources avec Name de la tables personne_cible ), et à la fin, je dois générer le taux des tests qui ont passé en succès et les tests qui ont échoués

    exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Table Source                                                            Table cible
     
    personnes                                                                pers_Tab_Logica
     
    Nom  Prenom                                                         LastName    FirstName
     
    yas     el                                                                   yohan        el
    mokh  ami                                                                   jiji       am
    donc après je dois générer un rapport qui contient 75 % de taux d'échecs et 25 % de taux de réussite ( 1/4 réussis )


    PS:

    J'ai pensé à utiliser les EJB, le problème est que les EJB ne manipule pas les données directement en SQL mais sous forme d'objets particuliers qu'on appelle des "classes entités" (ce qui est une bonne chose, mais malheureusement pas dans mon cas), si par exemple j'ai 80 DB sous oracle je dois créer 80 source de données, et si dans chaque DB existe 10 tables, je dois créer 800 classes entités ... c'est lourd et surtout c'est pas dynamique.

    As-tu une idée simple pour que je puisse accéder aux données depuis mon application, et je puisse faire mes comparaisons des données source et cible ....


    Merci

  2. #2
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    je dois créer 80 source de données, et si dans chaque DB existe 10 tables, je dois créer 800 classes entités ... c'est lourd et surtout c'est pas dynamique.
    Pas tout à fait d'accord. Si tu dois comparer les données des tables, c'est qu'à la base ces tables ont des propriétés communes, en d'autres termes 2 tables structurellement identiques pourraient se partager la même entité, ce qui réduirait considérablement le nombre d'entités à mapper.Et du coup je ne comprends pas non plus pourquoi tu trouves que ce n'est pas dynamique. Faire du sql Natif surtout pour l'objectif qui est de comparer les enregistrements je pense que sur le long terme tu perdras du temps de dev, puisqu'une comparaison de 2 objets peut se faire avec moins de dev avec très peu de dev qu'une comparaison champ par champ si tu fais du natif, après ça reste un avis personnel et discutable.Également rester en JPA(ou hibernate) ça me parait plus facilement maintenable, lisible, évolutive et structurée. Même si tu me diras que côté performance du sql Natif serait plus rapide, mais après faut voir aussi du côté volumétrie que t'auras à traiter.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 318
    Points : 81
    Points
    81
    Par défaut
    Salut DevServlet, merci pour ta réponse, est-ce que tu as une piste à me proposer pour commencer cette partie, franchement je sais pas encore comment je vais faire, si c'est possible de m'aider avec un tuto.

  4. #4
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Bonjour,
    D'entrée, je préfère te dire que ça va être un peu lourd à gérer, ce quel que soit le mode d'accès aux données (JPA ou JBDC classique) car qui dit 80 source de données dit 80 connexions aux bases différentes. A moins que ce soit des bases permettant de définir des synonymes (mécanisme d'accès à une table d'une base depuis une autre) Ce qui permettrait de ne gérer qu'une seule connexion à une base point d'entrée. Mais sinon si tu décides d'adopter JPA, il te faudra autant de contextes de persistances que de sources de données.Ce lien ici te permet de le faire. Et donc via les entityManager de chaque source de données tu pourras manipuler les entités pour effectuer des différentes opérations de comparaisons.Comme je t'ai proposé plus haut, lors de ton mapping Objet/relationnel il faudra bien analyser les tables similaires des différentes bases pour mutualiser le maximum possible les entités à créer.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 318
    Points : 81
    Points
    81
    Par défaut
    Je vais utiliser finalement JDBC, le problème est que je connais pas combien de tables j'ai dans mes bases, et je veux voir les tables qui existe dans la base de donnée ( que l'utilisateur choisi en rentrant les paramètres de connections ... host, port, user, BD, password )

    Est-ce que tu as une idée de mon shéma de conception ? si je vais utiliser des Designes Patterns ? Est-ce que tu as un exemple dans ce sens ?

    Merci

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 318
    Points : 81
    Points
    81
    Par défaut
    Les étapes de mon appli:

    1 - connection à la base ( en saisissant les paramètres )

    2- choisir les tables que je vais comparer, par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Tables sources             Tables cibles
    personness                     NMO_Pers
    Voitures                          car 
    ....
    3- comparer les champs de la table source avec les champs de la table cible
    3- créer un rapport pour savoir les taux d'échec et de succès

  7. #7
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Citation Envoyé par maserati Voir le message
    Je vais utiliser finalement JDBC, le problème est que je connais pas combien de tables j'ai dans mes bases, et je veux voir les tables qui existe dans la base de donnée ( que l'utilisateur choisi en rentrant les paramètres de connections ... host, port, user, BD, password )

    Est-ce que tu as une idée de mon shéma de conception ? si je vais utiliser des Designes Patterns ? Est-ce que tu as un exemple dans ce sens ?

    Merci
    Donc si je récapitule, C'est à l'utilisateur de saisir les données de connexions à la datasource source et cible, et une fois que c'est fait, j'imagine que c'est lui aussi qui selectionne les tables source et cible et ton programme génère les statistiques de comparaisons c'est bien ça? et ben dans ce cas une connexion à chaud décrite ainsi, le jdbc brut me parait plus adapté dans ce cas. A priori je ne vois pas quel patron de conception pourra t'aider à mieux structurer ton process.Un MVC classique serait déjà pas mal

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 318
    Points : 81
    Points
    81
    Par défaut
    Oui tu as bien compris mon besoin

    j'ai déjà commencé à developper:

    Vue : jsf/primefaces

    Controller: Des classes Beans

    Modele (accès aux données ) : JDBC

    j'ai déjà une page, où l'utilisateur rentre un paramètre de connexion, il se connecte, le problème c'est que comment je vais utiliser cette instance dans mes accès aux tables dans mes requêtes ?

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 318
    Points : 81
    Points
    81
    Par défaut
    As-tu un exemple d'un tuto qui fait presque la même chose STP

    PS: les tabes cibles et sources sont dans la même Base de donnée

  10. #10
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Citation Envoyé par maserati Voir le message
    As-tu un exemple d'un tuto qui fait presque la même chose STP

    PS: les tabes cibles et sources sont dans la même Base de donnée
    Non non désolé. Il va falloir que tu creuses. Nous sommes à ta disposition si tu bloques. On ne fait pas du tout cuit ici, désolé . En gros voila ce que je vois :
    A-Côté IHM, je vois 3 écrans :
    1) Saisie Paramètres Base==> Un écran permettant de saisir les paramètres de la datasource source, et les paramètres de la datasource cible, une fois que le client, il faut passer les controles de champs bien remplis, et s'assurer aussi que les paramètres source et cible ne sont pas identiques, si tel est le cas, le rejeter.Si tout est bien rempli, la servlet réceptionnant les données doit aller récupérer les noms de toutes les tables présentes et la retourner à l'écran suivant:
    2) Un écran permettant d'afficher les noms des tables cibles et sources. Une fois les selections effectuées, une 2eme servlet lancera les opérations de comparaisons et retour les resultats à une 3eme écran
    3) Un écran d'affichage des résultats.
    Au final 2 connexions à 2 datasources suffiront à un instant t quelconque. Ce seront les 2 connexions cibles et source désignées dans l'écran 1.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 318
    Points : 81
    Points
    81
    Par défaut
    Oui tu as parfaitement détaillé mon projet

    1 - Comme je connais pas les shémas de mes tables, ni le nombre de tables, je pourrais pas faire une conception, ni limiter mon périmètre.

    2 - Je sais pas comment je vais faire pour que je puisse lister une liste de tables qui existe dans la base auquel je me suis connecté ?

    3 - je sais pas non plus comment faire pour accéder aux champs de chaque tables ?


    Bref je pense que je suis dans la merde surtout qu'il me reste 1 mois pour terminer ce stage

  12. #12
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Citation Envoyé par maserati Voir le message
    Oui tu as parfaitement détaillé mon projet

    1 - Comme je connais pas les shémas de mes tables, ni le nombre de tables, je pourrais pas faire une conception, ni limiter mon périmètre.
    Pour moi y'a pas trop besoin d'une grande conception, tu peux peut déjà réaliser un diagramme de séquences, suivi d'un diagramme de classes faisant intervenir les différentes classes qui rentreront dans le scénario d'affichage des statitisques de comparaison.
    Citation Envoyé par maserati Voir le message
    2 - Je sais pas comment je vais faire pour que je puisse lister une liste de tables qui existe dans la base auquel je me suis connecté ?
    Pour toutes les bases de données tu dois avoir une instruction SQL te renvoyant toutes les tables d'une base de données, sous mysql par exemple c'est
    Citation Envoyé par maserati Voir le message
    3 - je sais pas non plus comment faire pour accéder aux champs de chaque tables ?
    Egalement pour chaque table d'une base de données tu as une instruction sql qui renvoit la description d'une table, sous mysql ou oracle c'est : ou pour avoir les colonnes disponibles sous oracle par exemple c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select COLUMN_NAME from USER_TAB_COLUMNS where TABLE_NAME = <nom de ta table>
    Citation Envoyé par maserati Voir le message
    Bref je pense que je suis dans la merde surtout qu'il me reste 1 mois pour terminer ce stage
    Euhh je n'ai pas souvent l'habitude du pessimisme, mais vu les temps impartis, la charge de travail et ton peu d'expérience j'ai un peu peur que tu n'y arrives pas. Mais je serai toi je commencerai par une conception bien détaillée à la UML, et un début de code, ainsi même si tu ne termines pas la réalisation, que cette conception puisse servir de départ pour celui qui reprendra.Bon courage

Discussions similaires

  1. Réponses: 8
    Dernier message: 15/10/2015, 15h44
  2. Réponses: 4
    Dernier message: 15/02/2015, 10h03
  3. Problème d'accès au matériel embarqué depuis une application web
    Par j_esti dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 16/06/2014, 23h15
  4. Réponses: 4
    Dernier message: 17/02/2011, 21h41
  5. [Interface]Executer une appli c++ depuis une application web
    Par mguinot dans le forum Développement Web en Java
    Réponses: 4
    Dernier message: 14/11/2005, 14h30

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