2. Chapitre ILA PERSISTANCE DES OBJETS 1-introduction 2- le mapping O/R (objet/relationnel) 3-l’architecture JAVA…..ADO.NET 4-la persistance de données JAVA…..ADO.NET
3. Chapitre ILA PERSISTANCE DES OBJETS 1-introduction plusieurs types de base de données: Dl1,IMS: Hiérarchique Mysql:Relationnelle (RDBMS / SGBDR) Objet (ODBMS / SGBDO): db4objects Xindice:XML (XDBMS) La seconde catégorie est historiquement la plus répandue mais aussi une des moins compatible avec la programmation orienté objet.
11. Chapitre ILA PERSISTANCE DES OBJETS 3-L’ARCHITECTURE : 31-l’architecture en java : Dans une architecture en couche: prévoir une couche dédiée aux accès aux données. La couche de persistence un niveau d'abstraction entre la base de données et l'utilisation qui en est faite. simplifier la couche métier qui utilise les traitements de cette couche masquer les traitements réalisés pour mapper les objets dans la base de données et vice et versa la couche métier ne contient aucune requête SQL, ni code de connexion ou d'accès à la base de données. La couche métier utilise les classes de la couche métier qui encapsulent ces traitements. Ainsi la couche métier manipule uniquement des objets pour les accès à la base de données.
12. LA PERSISTANCE DES OBJETS 32- l’architecture ado.net : Deux composants d'ADO.NET permettent d'accéder à des données et de les manipuler : Fournisseurs de données .NET Framework Objet DataSet Les Fournisseurs de données .NET Framework : L'objet Connection assure la connectivité avec une source de données. L'objet Command permet l'accès aux commandes de base de données pour retourner des données, modifier des données,. Le DataReader fournit un flux très performant de données en provenance de la source de données. Enfin, l'objet DataAdapter établit une passerelle entre l'objet DataSet et la source de données. Le DataAdapter utilise les objets Command pour exécuter des commandes SQL au niveau de la source de données afin d'une part de charger le DataSet de données, et d'autre part de répercuter dans la source de données les modifications apportées aux données contenues dans le DataSet. LeDataset ADO.NET est explicitement conçu pour un accès aux données indépendant de toute source de données. Il peut donc être utilisé avec plusieurs sources de données différentes, utilisé avec des données XML ou utilisé pour gérer des données locales de l'application..
17. la configuration via des fichiers xmlJPA peut être utilisé avec Java EE dans un serveur d'application mais aussi avec Java SE
18. LA PERSISTANCE DES OBJETS 42-la persistance de données-ADO.NET : 421- La persistance manuelle (ADO.NET, DataSet, …) 422- La persistance automatique: La persistance automatique est à l’essence du mapping objet/relationnelle. Cette approche consiste à prendre en charge le cycle de vie d’une entité de manière dynamique .L’utilisateur ne se préoccupe à aucun moment de l’état de son entité. La persistance automatique fournit les services suivants : - recherche, sauvegarde, mise à jour - concurrence - cache de 1er niveau et second niveau - navigation - chargement à la demande - transactions (éventuellement)
19. Chapitre II:JAVA PERSISTANCE API 1- introduction 2- les entites le mapping entre le beanentite et la table le mapping de propriete complexe le mapping d’une entite sur plusieurs tables l’utilisation d’objets embarques dans les entites 3- le fichier de configuration du mapping 4-L’UTILISATION DE BEAN ENTITE l’entity manager l’obtention d’une instance de la classe EntityManager l’utilisation de la classe EntityManager 5- le fichier persistence.xml
20. CHAPITRE II Java persistance API 1-INTRODUCTION L'API Java Persistence repose sur des entités qui sont de simples POJOs annotés et sur un gestionnaire de ces entités (EntityManager) qui propose des fonctionnalités pour les manipuler (ajout, modification suppression, recherche). Ce gestionnaire est responsable de la gestion de l'état des entités et de leur persistance dans la base de données.
21. CHAPITRE II Java persistance API 2-LES ENTITES Un objet Java de type POJO mappé vers une table de la base de données grâce à des méta data via l'API Java Persistence est nommé bean entité (Entitybean). la classe du bean doit obligatoirement: être marquée avec l'annotation @javax.persistence.Entity Posséder une propriété déclarer comme clé primaire avec l'annotation @Id Le beanentity est composé de propriétés qui seront mappés sur les champs de la table de la base de données sous jacente. Chaque propriété encapsule les données d'un champ d'une table. Ces propriétés sont utilisables au travers de simple accesseurs (getter/setter).
22. CHAPITRE II Java persistance API 21-le mapping entre le bean entité et la table La description du mapping entre le bean entité et la table peut être fait de deux façons : -Utiliser des annotations -Utiliser un fichier XML de mapping L'API propose plusieurs annotations pour supporter un mapping O/R assez complet. @javax.persistence.Table Préciser le nom de la table concernée par le mapping @javax.persistence.Column Associé à un getter, il permet d'associer un champ de la table à la propriété @javax.persistence.Id Associé à un getter, il permet d'associer un champ de la table à la propriété en tant que clé primaire @javax.persistence.GeneratedValue Demander la génération automatique de la clé primaire au besoin
23. CHAPITRE II Java persistance API 22-le mapping de proprieté complexe L'API Java persistence permet de mapper des colonnes qui concernent des données de type plus complexe que les types de base tel que les champs blob ou clob ou des objets. L'annotation @javax.persistence.Lob permet mapper une propriété sur une colonne de type Blob ou Clob selon le type de la propriété : Blob pour les tableaux de byte ou Byte ou les objets sérializables Clob pour les chaînes de caractères et les tableaux de caractères char ou Char L'annotation @javax.persistence.Enumerated permet d'associer une propriété de type énumération à une colonne de la table sous la forme d'un numérique ou d'une chaîne de caractères.
24. CHAPITRE II Java persistance API 23-le mapping d’une entité sur plusieurs tables Le modèle objet et le modèle relationnel correspondant ne correspondent pas toujours car les critères de conception ne sont pas forcement les même. Ainsi, il est courant d'avoir une entité qui mappe des colonnes de plusieurs tables. L'annotation @javax.persistence.SecondaryTablepermet de préciser qu'une autre table sera utilisée dans le mapping. L'annotation @PrimaryKeyJoinColumn permet de préciser une colonne qui compose la clé primaire de la seconde table et entre dans la jointure avec la première table.
25. CHAPITRE IIJava persistance API 24-l’utilisation d’objets embarqué dans les entités L'API Java Persistence permet d'utiliser dans les entités des objets Java qui ne sont pas des entités mais qui sont agrégés dans l'entité et dont les propriétés seront mappées sur les colonnes correspondantes dans la table. La mise en oeuvre de cette fonctionnalité est similaire à celle utilisée avec l'annotation @EmbeddedId pour les clés primaires composées. La classe embarquée est un simple POJO qui doit être marquée avec l'annotation @javax.persistence.Embeddable
26. CHAPITRE II Java persistance API 3-LE FICHIER DE CONFIGURATION DE MAPPING est aussi possible de définir le mapping dans un fichier de mapping nommé par défaut orm.xml stocké dans le répertoire META-INF. Ce fichier orm.xml est un fichier au format xml. L'élément racine est le tag <entity-mappings>. Pour chaque entité, il faut utiliser un tag fils <entity>. Ce tag possède deux attributs : Class qui permet préciser le nom pleinement qualifié de la classe de l'entité Access qui permet de préciser le type d'accès aux données (PROPERTY pour un accès via les getter/setter ou FIELD pour un accès via les champs). La déclaration de la clé primaire se fait dans un tag <id> fils d'un tag <attributes>. Ce tag <id> possède un attribut nommé name qui permet de préciser le nom du champ qui est la clé primaire.
27. CHAPITRE IIJava persistance API 4-L’UTILISATION DE BEAN ENTITE Toutes les actions de persistance sur ces objets sont réalisées grâce à un objet dédié de l'API : l'EntityManager. Un contexte de persistance (persistencecontext) est un ensemble d'entités géré par un EntityManager. 41- l’EntityManager Les interactions entre la base de données et les beans entité sont assurées par un objet de type javax.persistence.EntityManager : il permet de lire et rechercher des données mais aussi de les mettre à jour (ajout, modification, suppression). L'EntityManager est donc au coeur de toutes les actions de persistance. Un EntityManager gère un ensemble défini de beans entité nommé persistence unit. La définition d'un persistence unit est assurée dans un fichier de description nommé persistence.xml.
28. CHAPITRE II Java persistance API Cycle de vie d’une entité
29. CHAPITRE IIJava persistance API 42-l'obtention d'une instance de la classe EntityManager pour obtenir une instance de type EntityManager, il faut utiliser une fabrique de type EntityManagerFactory. Cette fabrique propose la méthode createEntityManager() pour obtenir une instance. Pour obtenir une instance de la fabrique, il utiliser la méthode statique createEntityManagerFactory() de la classe javax.persistence.Persistence qui attend en paramètre le nom de l'unité de persistence à utiliser. Elle va rechercher le fichier persistence.xml dans le classpath et recherche dans ce fichier l'unité de persistance dont le nom est fourni.
30. CHAPITRE IIJava persistance API 43- L'utilisation de la classe EntityManager La méthodecontains() La méthode clear() la méthode flush() des méthodes de mise à jour persist(), merge() et remove() ne réalise pas d'actions immédiates dans la base de données sous jacente. L'exécution de ces actions est à la discrétion de l'EntityManager selon le FlushModeType (AUTO ou COMMIT).
31. CHAPITRE II Java persistance API 431- L'utilisation de la classe EntityManager pour la création d'une occurrence Pour insérer une nouvelle entité dans la base de données, il faut : -Instancier une occurrence de la classe de l'entité Initialiser les propriétés de l'entité -Définir les relations de l'entité avec d'autres entités au besoin -Utiliser la méthode persist() de l'EntityManageren passant en paramètre l'entité
32. CHAPITRE IIJava persistance API 432- L'utilisation de la classe EntityManager pour rechercher des occurrences -La recherche à partir de la clé primaire -La recherche à partir d'une requête utilisant une syntaxe dédiée -les méthodes find() et getReference 433- L'utilisation de la classe EntityManager pour rechercher des données par requête createQuery(), createNamedQuery() et. La méthodesetParameter()
33. CHAPITRE IIJava persistance API 434- L'utilisation de la classe EntityManager pour modifier une occurrence Pour modifier une entité existante dans la base de données, il faut : -Obtenir une instance de l'entité à Modifier les propriétés de l'entité -il peut être nécessaire d'appeler la méthode flush() explicitement 435- L'utilisation de la classe EntityManager pour fusionner des données la méthode merge()
34. CHAPITRE IIJava persistance API 436- L'utilisation de la classe EntityManager pour supprimer une occurrence Pour supprimer une entité existante dans la base de données, il faut : -Obtenir une instance de l'entité à supprimer -Appeler la méthode remove() de l'EntityManager la méthode persist(). 437- L'utilisation de la classe EntityManager pour rafraîchir les données d'une occurrence La méthode refresh()
35. Java persistance API 5-LE FICHIER PERSISTENCE.XML Ce fichier persistence.xml contient la configuration de base pour le mapping notamment en fournissant les informations sur la connexion à la base de données à utiliser. stocké dans le répertoire META-INF La racine du document XML du fichier persistence.xml est le tag <persistence >
37. CHAPITRE IIIADO.Net 1-INTRODUCTION En utilisant le .NET, Microsoft propose sa dernière technologie d'accès aux données ADO .Net. C'est une ensemble de classes permettant de récupérer et de manipuler des données et qui fait partie intégrante de la nouvelle plate forme appelée .Net Framework. Nous allons présenter les nouveautés ADO.Net, le modèle ADO.Net ainsi que les objets Connections, Command et DataReader.
43. CHAPITRE IIIADO.Net 4-1-1 Objet Connection La connectivité à SQL Server est assurée par l'objet SqlConnection de l'espace de noms System.Data.SqlClient. Le Framework .Net propose ainsi des objets de connexion différents en fonction du type de fournisseur de données choisi. Par exemple vous devrez utiliser l'objet OleDbConnection si votre fournisseur est un fournisseur OleDb. L'ouverture d'une connexion est réalisée par la méthode Open() et la fermeture par la méthode Close().
44. CHAPITRE IIIADO.Net 4-1-2 L’objet Commande La création d'un objet Command nécessite l'instanciation d'un objet SqlCommand. Cet objet expose différentes méthodes Execute à utiliser selon le résultat attendu : La méthode ExecuteReader peut être utilisée pour récupérer un jeu d'enregistrements et retourne un objet DataReader. La méthode ExecuteScalar récupère une valeur unitaire. La méthode ExecuteNonQuery exécute une commande ne retournant pas de lignes.
45. CHAPITRE IIIADO.Net 4-1-3 L’objet DataReader L'objet DataReader permet de récupérer d'une source de données un flux en lecture seule en avant seulement (readonly, forwardonly). Il résulte de l'exécution de la méthode ExecuteReader sur un objet Command. L'objet DataReader ne stocke en mémoire qu'une seule ligne à la fois, permettant ainsi d'augmenter les performances d'une application et d'en réduire la charge.
46. CHAPITRE IIIADO.Net 4-1-4 L’objet DataSet Le Data Set est un objet qui réside en mémoire et qui correspond à une copie locale des données d'une telle base de données. D’abord, il contient les tables d'une base, leurs relations et les contraintes appliquées aux données.
48. CHAPITRE IIIADO.Net 4-1-4-1-1 La Collection DataTableCollection Cette collection peut contenir de zéro à n objets de type DataTable. Chaque objet DataTable représente une table d'une source de données. Chaque DataTable est constituée d'une collection Columns et d'une collection Rows qui peuvent contenir respectivement de zéro à n objets DataRow et DataColumn
49. CHAPITRE IIIADO.Net 4-1-4-1-2 La Collection DataRelationCollection Cette collection peut contenir de zéro à n objets de type DataRelation. Un objet DataRelation défini une relation parent-enfant entre deux tables à partir des valeurs des clés étrangères.
50. CHAPITRE IIIADO.Net 4-1-4-1-3 La Collection DataAdapter Un objet DataSet doit être capable d'interagir avec une ou plusieurs sources de données. Pour réaliser cette action le Framework Microsoft .Net fournit un objet nommé DataAdapter. L'objet DataAdapter sert de liaison entre un objet DataSet et une source de données.
51. CHAPITRE IIIADO.Net 4-1-4-1-4 La Collection DataAdapter Un objet DataSet doit être capable d'interagir avec une ou plusieurs sources de données. Pour réaliser cette action le Framework Microsoft .Net fournit un objet nommé DataAdapter. L'objet DataAdapter sert de liaison entre un objet DataSet et une source de données.
Une fois la connexion vers une base de données est effectuée, vous pouvez exécuter une requête et récupérer son résultat en utilisant l'objet Command.