1
votes

UI5: récupérer et afficher des milliers d'éléments dans sap.m.

Il existe une base de données relationnelle (MySQL 8) avec des dizaines de milliers d'éléments dans le tableau, qui doivent être affichés dans sap.m.Table . L'approche directe consiste à récupérer tous les éléments avec une requête SQL et à les fournir au côté client en JSON de manière asynchrone. Le principal inconvénient de cette approche est la performance et la consommation de mémoire côté client. L'ensemble du tableau doit être affiché côté client pour permettre à l'utilisateur et à la capacité d'effectuer des recherches rapides. Ceci est crucial pour l'application.

Actuellement, il existe deux options:

  1. Récupérez les 100 premiers enregistrements et insérez-les dans la table. De cette façon, l'utilisateur peut rechercher immédiatement les 100 derniers enregistrements. En même temps, exécuter une requête supplémentaire dans un travailleur Web, ce qui prendra environ 2 à 5 secondes et obtiendra tous les enregistrements sauf ceux de 100. Ensuite, pour fusionner deux JSON.

  2. Conservez JSON sur le serveur d'applications en tant que variable en cache et mettez-le à jour lorsque l'utilisateur ajoute un nouvel enregistrement ou supprime un enregistrement. Ensuite, je récupère le JSON qui est censé être beaucoup plus rapide que d'interroger la base de données.

La question:
Comment puis-je afficher dans la sap.m.Table des milliers d'éléments d'OpenUI5?


0 commentaires

3 Réponses :


1
votes

Mon avis; Vous devez créer un backend OData pour vos tables. L'utilisateur peut filtrer ou rechercher des enregistrements avec des capacités OData. Vous n'avez pas besoin de pousser toutes les données vers le client, sap.m.Table demande automatiquement le reste des données avec le protocole OData pendant que l'utilisateur fait défiler le tableau.


2 commentaires

Merci, je vais vérifier la faisabilité de l'option OData Backend.


Les directives indiquent que vous devez utiliser sap.ui.table.Table pour les très grands ensembles. La recommandation ne dépasse pas 1 000: experience.sap.com/fiori-design -web / table-réactive



1
votes

La recommandation SAP indique un maximum de 100 ensembles de données pour sap.m.Table . En pratique, je conseillerais de suivre la recommandation, même sur PC rapide le rendu sera ralenti.

Si vous souhaitez tester plus de 100 ensembles de données, vous devez définir la limite de taille sur votre oModel comme oModel.setSizeLimit(1000);


0 commentaires

1
votes

Réponse rapide que vous ne pouvez pas.

Utilisez sap.ui.table ou fournir un service odata approprié avec un support top / skip comme indiqué ici sous 4.3 et 4.4.

En fonction de votre code backend (java, abap, node), il existe des libs pour vous aider .


0 commentaires