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

JDBC Java Discussion :

Existe-t-il une implémentation "licite" de CachedRowSet?


Sujet :

JDBC Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 84
    Points : 61
    Points
    61
    Par défaut Existe-t-il une implémentation "licite" de CachedRowSet?
    Bonjour,
    je suis en train d'effectuer le portage d'une appli Delphi et Java pour un copain. Dans cette appli il y a une connexion avec une BD et pas mal d'interactions avec elle. Pour cela j'envisage d'utiliser un CachedRowSet car je ne veux pas maintenir la connexion avec la base.

    Sauf que la classe CachedRowSetImpl est "sous restriction". J'ai bien sur trouvé sur Internet le moyen de contourner la restriction mais cela me pose un problème. En effet, si j'effectue un portage sous Java c'est pour avoir une application qui puisse durer un peu. Donc si j'utilise une classe "non fiable" c'est contraire à mon objectif. Aussi existerait-il une alternative à cette foutue classe?

    Merci d'avance.

  2. #2
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 711
    Points : 4 797
    Points
    4 797
    Par défaut
    CachedRowSetImpl est "sous restriction"
    comment ça ?
    je n'ai pas vu d'info dans la doc là-dessus
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 84
    Points : 61
    Points
    61
    Par défaut
    Quand tu essaies de t'en servir tu as un gros message d'alerte d'Eclipse. Et une recherche sur le net n'a pas donné de réponse claire sur la pérennité de cette classe. Elle donne des moyens de contournement (en transformant l'alerte en simple warning) mais c'est tout.

  4. #4
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 711
    Points : 4 797
    Points
    4 797
    Par défaut
    Effectivement, il y a un avertissement sur cette classe au moment de la compilation.
    (pas vu d'info là-dessus dans la doc)

    Si on revient sur le fond du problème, tu devrais commencer par faire un test avec un Statement standard
    pour vérifier que tu as vraiment besoin de CachedRowSetImpl parce qu'en regardant la FAQ à ce sujet
    cela semble assez lourd à programmer.
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 84
    Points : 61
    Points
    61
    Par défaut
    c'est ce que j'ai fait dans mon code. Mais je préférerais utiliser le cachedRowSet car a priori il correspond mieux à mes besoins. En effet, le statement normal maintient une connexion durant toute son existence, ce qui peut peut-être problématique en utilisation nomade.

  6. #6
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 711
    Points : 4 797
    Points
    4 797
    Par défaut
    maintient une connexion durant toute son existence
    Certes mais rien n’empêche de fermer/ouvrir la connexion au fur et à mesure du besoin.
    Qu'est ce que c'est que la base de données et quelle est la fréquence des mises à jour par l'application ?
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 84
    Points : 61
    Points
    61
    Par défaut
    C'est du MySQL. Et le problème c'est que la base contient de nombreux enregistrements, et que les accès sont essentiellement pour les modifier et pour en créer de nouveaux. Sachant que la création est assez complexe. Donc faire de la gestion "au coup par coup" est bien sur possible mais devient vachement lourd en terme de programmation

  8. #8
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 711
    Points : 4 797
    Points
    4 797
    Par défaut
    vachement lourd en terme de programmation
    euh non, le cachedRowSet va soulager MySql en terme de connexions (et encore !)
    par contre la programmation des mises à jour CREATE, UPDATE, DELETE reste la même qu'avec un Statement.

    Si tu veux économiser sur les transactions, regarde plutôt du côté des batch :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    connection.setAutoCommit(false);
    Statement statement = connection.createStatement();
     
    for(int i=0; i<10 ; i++) {
       statement.addBatch("INSERT INTO personne VALUES('nom"+i+"','prenom"+i+"')");
    }
    statement.executeBatch();
    // code cité par jmdoudoux
    très efficace (une fois j'ai du charger 50.000 enregistrements d'un coup, cela m'a bien aidé)
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 84
    Points : 61
    Points
    61
    Par défaut
    Le Rowset étant en auto-update je n'ai actuellement pas à me préoccuper des update.

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