Table des matières
Ce chapitre décrit le modèle de données de Vaadin et son utilisation afin de lier des composants de manière directe aux sources de données comme par exemple les requêtes aux bases de données.
Le modèle de données de Vaadin est un des principes fondamentaux de la librairie. Nous avons introduit une interface d'accès aux données standard afin de permettre à la Vue (les composants de l'interface utilisateur) d'accéder directement au modèle de données d'une application.
Le modèle permet d'assurer une liaison directe entre les composants de l'interface utilisateur et et les données qu'ils affichent et permettent éventuellement d'éditer. Le modèle de données est composé d'une hiérarchie à trois niveaux: property, item, etcontainer. Par analogie avec une feuille de calcul ceux ci correspondrait respectivement aux cellule, rangée et table .
Le modèle de données est implanté comme un ensemble d'interfaces dans le package com.vaadin.data. Le package contient les interfaces Property, Item, et Container interfaces ainsi que de nombreux autres classes et interfaces plus spécialisés.
Veuillez noter que le modèle ne défini pas de représentation de données, mais seulement des interfaces. Cela confie totalement la représentation à l'implémentation des containers. La représentation peut être de type bien différents tels que des objets Java de base (POJO), un sysstème de fichiers ou une requête de base de données.
Le Modèle de données est fortement utilisé par les composants d'interface utilisateur de Vaadin, plus spécialement par les composants de type champ de saisie qui implémentent l'interface Field ou de plus typiquement qui étendent AbstractField, qui définit un grand nombre de fonctionnalités communes. Les composants champ de saisie inclut ont pour fonctionnalité centrale d'être capable soit de faire persister par eux même leurs données soit d'être liés à une source de données extérieure. La valeur d'un champ est toujours disponible à l'aide de l'interface Property. Comme on peut lier plusieurs composants à une même source de données on peut implémenter facilement des modèles d'affichage/édition différents.
On peut voir les relations entre les différentes interfaces sur Figure 9.2, « Relations entre les interfaces du Modèle de données de Vaadin »; les interfaces ValueChangeEvent et Listener ne sont affichées que pour l'interface Property alors que les interface de notification sont totalement omis.
Le modèle de données possède de nombreuses fonctionnalités utiles et importantes, comme le support pour la notification de modifications. Les containers particulièrement, ont plusieurs interfaces utilitaires, certaines permettent l'indexation, le classement, le tri et le filtrage des données. Les composants de type Field fournissent un certain nombre de fonctionnalités impliquant le modèle de données, telles que la mise en mémoire tampon, la validation et le chargement différé.
Vaadin fournit un certain nombre d'implémentations intégrées de l'interfaces du modèle de données. Les implémentations intégrées sont utilisées par défaut comme modèle de données dans de nombreux composants de type champ.
En plus des implémentations intégrées, de nombreuses implémentations de modèle de données, tels que les containers, sont disponibles sous la forme d'add-ons, soit à partir du dépôt (Vaadin directory) ou à partir de sources tierces. Il existe à la fois des implémentations commerciales et libres. Le JPAContainer, décrit dans le Chapitre 18, Vaadin JPAContainer, est l'Add-on commercial de container le plus souvent utilisé. L'installation de modules add-on est décrite au Chapitre 15, Using Vaadin Add-ons, à l'aide des modules de Vaadin. Notez que, contrairement aux composants add-on plus standard il n'est pas nécessaire de recompiler l'ensemble des widgets pour les add-ons n'incluant que des implémentations du modèle de données.