1. Introduction#

Supports complémentaires:

Objectifs du cours#

Le cours a pour objectif de montrer par la pratique comment intégrer les accès aux bases de données relationnelles dans des applications orientées-objet d’envergure développées selon les meilleures pratiques. Il est centré sur les outils dits Object-Relational Mapping (ORM) qui établissent automatiquement une conversion entre les données stockées dans une base relationnelle et les composants (objets) manipulés par les applications informatiques. L’un des plus connus de ces outils est Hibernate, qui sert de base à une grande partie des exemples fournis. Cependant, l’objectif est, au-delà d’un outil particulier, d’expliquer le pourquoi et le comment des outils de type ORM, et de comprendre comment ils s’intègrent à l’architecture générale d’une application complexe. En particulier, les aspects suivant sont explorés en détail et indépendamment des particularités d’un outil particulier:

  • problèmes posés par la cohabitation d’une base relationnelle et d’une application orientée-objet;

  • méthodologie générique pour automatiser les conversions rendues nécessaires par cette cohabitation;

  • opérations de création, mise à jour et interrogation de données;

  • sensibilisation aux problèmes de performance et aux méthodes d’optimisation,

  • problèmes spécifiques aux transactions;

  • et, enfin, questions architecturales relatives à l’intégration avec d’autres composants logiciels.

Pour illustrer ce dernier aspect, les outils ORM ne sont pas étudiés en isolation mais en combinaison avec la construction d’application. Le contexte choisi est celui des applications web dynamiques, implantées selon des motifs de conception comme le Model-View-Controler (MVC). Ces motifs ne sont abordés que de manière très simplifiée, mais permettent de bien montrer la mise en œuvre de solutions ORM dans une approche globale.

Pré-requis#

Le cours suppose au préalable une connaissance solide des sujets suivants:

  1. Conception et programmation objet, de préférence avec Java.

  2. Concepts essentiels des bases de données relationnelles: conception, SQL, notion de transaction.

  3. Une maîtrise de base des outils et langages du Web, notamment HTML, et des principes des applications Web dynamiques.

De plus le contenu du cours dans l’ensemble suppose un intérêt pour la conception d’application en général, dans leur aspect architectural en particulier. Des connaissances pointues en développement ne sont pas indispensables, mais il doit être clair que la mise en pratique des concepts étudiés implique des manipulations pour reproduire les exemples proposés et la réalisation pratique d’une application très simplifiée. Le cours suit une démarche pas à pas, consistant à mettre en œuvre des exemples fournis et étendus dans le cadre de l’enseignement. Celà étant, une ignorance complète des bases ci-dessus constituera un obstacle réel pour l’assimilation du contenu.

Le langage de programmation étudié par défaut est Java. Des exemples équivalents pourront être donnés en PHP occasionnellement.

Organisation du cours#

Le cours est donné sous plusieurs modes:

  1. en présentiel, une soirée par semaine, au Cnam;

  2. en formation ouverte et à distance (FOD), avec enregistrement des cours, support par les enseignants et réunions occasionnelles de consolidation.

L’orientation est pratique, avec notamment une mise en œuvre rapide des concepts présentés. Une séance en présentiel consiste donc typiquement en une alternance de sessions comprenant tout d’abord une présentation des concepts et outils, puis une mise en pratique par des exercices. Pour chaque session, la partie présentation est courte, au maximum 1/2 heure, la mise en pratique dépend de vos capacités mais est conçue pour couvrir un temps équivalent. Un cours au Cnam en présentiel consiste donc typiquement en 2 à 3 sessions.

Dans le cas d’un suivi du cours en FOD, il est recommandé de suivre le support dans l’ordre des chapitres, chaque chapitre comprenant quelques sessions (numérotées S1, S2, erc.) regroupées autour d’une thématique commune. L’unité de travail est la session. Pour chaque session, vous devriez suivre le cours enregistré, lire le contenu correspondant et effectuer les exercices proposés. Comptez 1h à 1h30 de travail pour chaque session, sachant que le cours enregistré et la lecture peuvent s’effectuer sans utiliser un ordinateur. Bien entendu vous devez disposer d’un ordinateur personnel. Tous les logiciels nécessaires sont libres de droit et fonctionnent sous tous les environnements.

Le découpage est le suivant.

  1. Mise en place d’un environnement de développement: installation et configuration des différents outils.

  2. Rappel sur la construction d’application Web, et mise en pratique d’une architecture MVC simplifiée basée sur l’environnement J2EE.

  3. Mise en place d’une base relationnelle et accès à cette base avec l’interface de programmation standard (JDBC pour Java).

  4. Remplacement de la couche d’accès aux données par une abstraction objet construite avec le composant ORM.

  5. Exploration des fonctionnalités du composant ORM: modélisation, accès, performances, transactions.

À l’issue du cours, vous devriez maîtriser le pourquoi et le comment de la construction d’une application orientée données, être sensibilisés aux problématiques (performances notamment) de cette approche, en être capable de prendre rapidement en main les solutions professionnelles éprouvées pour de tels systèmes.

Évaluation#

Le cours est évalué par :

  • un examen sur table, de 2h.

  • un projet (à choisir parmi deux sujets détaillés dans la page Projets 23-24)

Le projet et l’examen sont notés sur 20, la note finale de l’UE est la moyenne de ces deux notes.