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

Spring Java Discussion :

Comment ne pas retourner les données de type CLOB dans findAll()


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de domiq44
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 302
    Par défaut Comment ne pas retourner les données de type CLOB dans findAll()
    Bonjour,

    Dans mon projet Spring MVC & spring Data JPA.

    J'ai une vue présentant une liste d'enregistrements sous forme d'un tableau associé à une seule et unique table de la base de données.
    Un système de pagination a été mis en place (Pageable / PageRequest) pour des raisons de performance.

    Cette table comporte 4 colonnes de type CLOB que je n'affiche pas dans le tableau.

    L'affichage d'un des CLOBs se fait en cliquant sur la ligne du tableau, dans la cellule associée. Une requête AJAX est alors déclenchée et me permet d'afficher son contenu dans une fenêtre modale.

    Mais au final, je trouve que le chargement de chaque page du tableau prend une certain temps.
    Cela doit être du à la requête findAll() qui me ramène toutes les colonnes, et donc les CLOBs (que je n'affiche pas dans le tableau).

    Comment faire pour que la requête findAll() me ramène tous les champs sauf les CLOBs ?
    Merci.

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391

  3. #3
    Membre éclairé Avatar de domiq44
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 302
    Par défaut
    Merci beaucoup pour ta réponse andry.aime.
    Je ne connaissais pas cette possibilité !

    J'utilise bien une base de données Oracle.

    Je viens de changer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    @Lob
    @Column(name = "DLD_CSV_IN")
    private String dldCsvIn;
    en cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @Lob
    @Basic(fetch = FetchType.LAZY)
    @Column(name = "DLD_CSV_IN")
    private String dldCsvIn;
    Mais j'ai l'impression que c'est toujours aussi lent !

    Existe-t-il un moyen de vérifier que la colonne n'est pas chargée ?

  4. #4
    Membre éclairé Avatar de domiq44
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 302
    Par défaut
    Je viens de lire sur le Net que cette solution ne fonctionnait pas sur tous les drivers de base de données

  5. #5
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Ça fonctionne bien sur oracle.
    Une autre solution c'est de créer un entité pour le champ clob et utilise ensuite une relation one-to-one.
    Pour ce que du lenteur, findAll charge toutes les lignes de la table, utilise query avec un limit pour ne charger que les lignes qui seront utilisés (setFirstResult , setMaxResults)
    http://docs.oracle.com/javaee/6/api/...rstResult(int)

    A+.

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    En utilisant aussi Pageable pour ne pas charger toutes le lignes:
    https://docs.spring.io/spring-data/d...ositories.html
    http://docs.spring.io/spring-data/co.../Pageable.html

    A+.

Discussions similaires

  1. Traiter les données de type "geometry" dans talend
    Par mano_bi dans le forum Développement de jobs
    Réponses: 4
    Dernier message: 08/12/2015, 15h07
  2. Réponses: 6
    Dernier message: 06/06/2014, 21h21
  3. Comment ne pas écraser les données ?
    Par Fatemy dans le forum Hibernate
    Réponses: 1
    Dernier message: 09/08/2011, 16h41
  4. Réponses: 0
    Dernier message: 28/01/2010, 14h02

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