Software">
[Go to site: main page, start]

0% ont trouvé ce document utile (0 vote)
5 vues118 pages

Cours Javaee Oct25

Ce cours sur le développement d'applications Web avec Java EE vise à enseigner les concepts fondamentaux de Java EE, à maîtriser les technologies clés et à acquérir des compétences pratiques pour créer et gérer des applications Web. Le plan du cours couvre des sujets tels que les servlets, JSP, JPA, et EJB, ainsi que la configuration de l'environnement de développement. Les prérequis incluent des connaissances en HTML, HTTP, Java, et bases de données relationnelles.

Transféré par

2y4b5s4nkg
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
5 vues118 pages

Cours Javaee Oct25

Ce cours sur le développement d'applications Web avec Java EE vise à enseigner les concepts fondamentaux de Java EE, à maîtriser les technologies clés et à acquérir des compétences pratiques pour créer et gérer des applications Web. Le plan du cours couvre des sujets tels que les servlets, JSP, JPA, et EJB, ainsi que la configuration de l'environnement de développement. Les prérequis incluent des connaissances en HTML, HTTP, Java, et bases de données relationnelles.

Transféré par

2y4b5s4nkg
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Développement d'applications

Web avec Java EE


Enseignante: Dr KIE VICTOIRE
OBJECTIFS DU COURS

1. Comprendre les concepts fondamentaux de Java EE (Java Enterprise Edition).


2. Maîtriser les technologies clés pour le développement d'applications Web d'entreprise.
3. Acquérir des compétences pratiques dans la création, le déploiement et la gestion
d'applications Web Java EE.

Prérequis :
▪ HTML, HTTP
▪ Bonne connaissance de Java
▪ Servlets (les bases)
▪ Bases de données relationnelles (transactions et accès concurrents en particulier)
2
PLAN DU COURS

Chapitre I: Introduction à Java EE


Chapitre II: Configuration de l'Environnement de Développement
Chapitre III: Servlets et JSP
Chapitre IV: Java Persistence API (JPA)
Chapitre V: Enterprise JavaBeans (EJB)
Chapitre VI: Développement d'une Application Web Complète
3
Chapitre I: Introduction à Java EE
1. Présentation de Java EE et de son architecture
❑ Présentation de java
➢ Java EE (Java Enterprise Edition), anciennement connu sous le nom de J2EE, est un ensemble
d’outils et de technologies qui s'appuie sur Java SE (Standard Edition) pour fournir des
fonctionnalités de développement d'applications d'entreprise. En résumé, il s'agit d'une
extension de Java destinée à la création d'applications d'entreprise robustes, évolutives et
sécurisées.
➢ Java EE est une plateforme fortement orientée serveur pour le développement et
l'exécution d'applications distribuées. Elle est composée de deux parties essentielles:
❖ Un ensemble de spécifications pour une infrastructure dans laquelle s'exécute les
composants écrits en Java : un tel environnement se nomme serveur d'application.
❖ Un ensemble d'APIs qui peuvent être obtenues et utilisées séparément. Pour être
utilisées, certaines nécessitent une implémentation de la part d'un fournisseur tiers4.
Chapitre I: Introduction à Java EE
1. Présentation de Java EE et de son architecture
Remarque: Les APIs de Java EE
➢ Une API (Application Programming Interface ) est une interface de programmation. C’est un
ensemble de fonctions, procédures ou classes mises à disposition des programmes
informatiques par une bibliothèque logicielle, un système d’exploitation ou un service.

➢ Les composants : permet un découpage de l'application et donc une séparation des rôles lors
du développement :
• Les composants web : Servlet et JSP(Java Server Pages).
• Les composants métier : EJB (Enterprise Java Beans).
➢ Les services :
• Les services d'infrastructures : JDBC(Java Database Connectivity), JNDI(Java Naming
and Directory Interface), ….
5
• Les services de communication : RMI-IIOP, JavaMail, JAAS
Chapitre I: Introduction à Java EE
1. Présentation de Java EE et de son architecture
❑Historique
➢ 1999 : Naissance de J2EE - La première version des spécifications J2EE est publiée. Elle pose
les bases du développement d'applications d'entreprise sur Java

➢ 2001 et 2003 : J2EE 1.3 et 1.4 - Ces versions apportent des améliorations et introduisent
notamment le support des services web, élément clé pour les interactions entre applications

➢ 2006 : Java EE 5 - C'est à partir de cette version que l'appellation J2EE est abandonnée au
profit de Java EE. La version 5 introduit des technologies importantes comme les annotations
et les Java Persistence API (JPA) pour la gestion des bases de données.

6
Chapitre I: Introduction à Java EE
1. Présentation de Java EE et de son architecture
❑Historique
➢ 2009 et 2017 : Java EE 6 et 8 - Ces versions successives enrichissent Java EE avec de
nouvelles fonctionnalités comme la prise en charge des Java Server Faces (JSF) pour les
interfaces web et l'intégration avec des bibliothèques comme CDI (Context Dependency
Injection) pour la gestion des dépendances.
➢ 2019 : Jakarta EE 8 - Oracle décide de céder les droits de Java EE à la fondation Eclipse. La
spécification est renommée Jakarta EE pour marquer ce changement. La version 8 reste
techniquement proche de Java EE 8
➢ 2025 : Java EE a été renommé Jakarta EE. Ce changement de nom a eu lieu après que la
gestion de la plateforme a été transférée de Oracle à la Fondation Eclipse. Jakarta EE continue
de fournir un ensemble de spécifications pour le développement d'applications d'entreprise
robustes et évolutives.
7
1. Présentation de Java EE et de son architecture
❑ Architecture en Java EE
Java EE utilise une architecture multi-niveaux qui sépare une application en plusieurs niveaux en
fonction de leur fonctionnalité. Les différents niveaux de l'architecture Java EE sont les suivants
:
➢ Niveau client (Client Tier) : Ce niveau représente les utilisateurs finaux qui interagissent
avec l'application. Il peut s'agir d'un navigateur web, d'un appareil mobile ou d'une application
autonome.
➢ Le niveau Web (Web Tier) : Ce niveau est responsable du traitement des requêtes HTTP et de
la génération des réponses. Le niveau web comprend des composants tels que les servlets, les
JSP et les cadres web.
➢ Le niveau métier (Business Tier): Ce niveau contient la logique d'entreprise de l'application
et effectue le traitement de la logique d'entreprise. Il comprend des composants tels que les
8
Enterprise JavaBeans (EJB) et la messagerie.
Chapitre I: Introduction à Java EE
1. Présentation de Java EE et de son architecture
❑ Architecture en Java EE
➢ Le niveau métier (Business Tier): Remarque ( bean enterprise)
Un bean enterprise est un composant Java qui peut être combiné avec d'autres ressources pour
créer des applications Java. Il existe trois types de beans entreprise : les beans entity, les beans
session et les beans gérés par message.

Tous les beans résident dans des conteneurs Enterprise JavaBeans (EJB) qui fournissent une
interface entre les beans et le serveur d 'applications qui les héberge

9
Chapitre I: Introduction à Java EE
1. Présentation de Java EE et de son architecture
❑ Architecture en Java EE
➢ Le niveau de persistance
(Persistence Tier) : Ce niveau
gère les données de l'application
et fournit un accès au magasin de
données. Le niveau de persistance
comprend des composants tels
que Java Persistence API (JPA) et
Java Database Connectivity
(JDBC).

10
Chapitre I: Introduction à Java EE
2. Comparaison avec Java SE
Java SE (Standard Edition) et Java EE (Enterprise Edition) sont deux plateformes de
développement Java distinctes, chacune avec ses propres fonctionnalités et objectifs.
❑ Fonctionnalités
➢ Java SE: Offre un ensemble de base d'API Java pour le développement d'applications de
bureau, Web et mobiles. Elle comprend des bibliothèques pour l'entrée-sortie, la gestion de
la mémoire, la mise en réseau, la sécurité et l'interface utilisateur graphique (GUI).

➢ Java EE: Étend Java SE avec des API supplémentaires pour le développement
d'applications d'entreprise évolutives et distribuées. Elle fournit des services tels que les
services Web, la gestion des transactions, la sécurité des applications, la messagerie et la
prise en charge des serveurs
11
Chapitre I: Introduction à Java EE
2. Comparaison avec Java SE
Java SE (Standard Edition) et Java EE (Enterprise Edition) sont deux plateformes de
développement Java distinctes, chacune avec ses propres fonctionnalités et objectifs.
❑ Cas d'utilisation
➢ Java SE: Convient aux applications autonomes, telles que les applications de bureau, les
jeux, les outils et les applications Web simples.

➢ Java EE: Conçu pour les applications d'entreprise complexes, telles que les systèmes de
commerce électronique, les applications bancaires, les portails d'entreprise et les
applications de collaboration

12
Chapitre I: Introduction à Java EE
2. Comparaison avec Java SE
Java SE (Standard Edition) et Java EE (Enterprise Edition) sont deux plateformes de
développement Java distinctes, chacune avec ses propres fonctionnalités et objectifs.
❑ Performances
➢ Java SE: Les applications Java SE sont généralement plus légères que les applications Java
EE et aussi performantes, car elles n'ont pas besoin des bibliothèques et services
supplémentaires inclus dans Java EE..

➢ Java EE: Les applications Java EE peuvent être plus gourmandes en ressources en raison
de leur complexité, leurs fonctionnalités accrues et aussi plus performantes.

13
Chapitre I: Introduction à Java EE
2. Comparaison avec Java SE
❑ Environnement d'exécution

➢ Java SE: Les applications Java SE peuvent s'exécuter sur n'importe quelle plateforme avec
une machine virtuelle Java (JVM) installée.

➢ Java EE: Les applications Java EE nécessitent un serveur d'applications Java EE, tel que
JBoss ou WebLogic, pour s'exécuter.

Choisir entre Java SE et Java EE: Le choix entre Java SE et Java EE dépend des besoins
spécifiques de votre projet. Si vous développez une application simple et autonome, Java SE est
un bon choix. Si vous avez besoin de développer une application d'entreprise complexe et
évolutive, Java EE est mieux adapté.
14
Chapitre I: Introduction à Java EE
2. Comparaison avec Java SE

15
Chapitre I: Introduction à Java EE
3. Vue d'ensemble des technologies principales de Java EE
Java Enterprise Edition (Java EE) s'appuie sur la plateforme Java Standard Edition (Java SE) et
fournit un ensemble d'API supplémentaires pour répondre aux besoins des applications d'entreprise
complexes. Les technologies principales de Java EE peuvent être regroupées en trois grandes
catégories.
❑ Composants
➢ Servlets: Les servlets sont des classes Java qui s'exécutent sur un serveur web et génèrent des
pages dynamiques. Ils sont utilisés pour créer des applications web interactives et évolutives.
➢ JSP (JavaServer Pages): JSP est une technologie permettant d'intégrer du code Java dans des
pages HTML. Elle permet aux développeurs de créer des pages web dynamiques plus facilement
que les servlets.
➢ EJB (Enterprise JavaBeans): EJB est une architecture logicielle pour le développement
d'applications distribuées. Elle fournit des composants réutilisables pour la gestion des
transactions, la sécurité et la persistance. 16
Chapitre I: Introduction à Java EE
3. Vue d'ensemble des technologies principales de Java EE
❑ Services
➢ JDBC (Java Database Connectivity): JDBC est une API pour se connecter à des bases de
données depuis des applications Java. Elle permet aux développeurs d'exécuter des requêtes
SQL et de gérer les résultats.

➢ JTA/JTS (Java Transaction API/Java Transaction Service): JTA/JTS fournit des services de
gestion de transactions pour les applications distribuées. Ils permettent aux développeurs de
s'assurer que plusieurs opérations sur différentes ressources sont soit toutes exécutées avec
succès, soit toutes annulées.

➢ JNDI (Java Naming and Directory Interface): NDI est un service d'annuaire qui permet aux
applications Java de trouver des objets et des services dans un environnement distribué.
17
Chapitre I: Introduction à Java EE
3. Vue d'ensemble des technologies principales de Java EE
❑ Services
➢ JCA (Java Connector Architecture): JCA est une architecture pour la connexion des
applications Java à des systèmes d'entreprise externes. Elle permet aux développeurs de se
connecter à des systèmes tels que des serveurs de messagerie, des systèmes de fichiers et des
mainframes.

➢ JAAS (Java Authentication and Authorization Service): JAAS est un service


d'authentification et d'autorisation pour les applications Java. Il permet aux développeurs de
sécuriser leurs applications en contrôlant l'accès aux ressources

18
Chapitre I: Introduction à Java EE
3. Vue d'ensemble des technologies principales de Java EE
❑ Communication
➢ RMI-IIOP (Remote Method Invocation - Internet Inter-ORB Protocol): RMI-IIOP est un
protocole pour la communication entre des objets Java distribués. Il permet aux développeurs
d'appeler des méthodes sur des objets situés sur différents ordinateurs.

➢ JMS (Java Message Service): JMS est une API pour la messagerie asynchrone entre
applications Java. Elle permet aux développeurs d'envoyer et de recevoir des messages entre
des applications qui ne sont pas nécessairement connectées en permanence.

➢ JavaMail: JavaMail est une API pour envoyer et recevoir des emails depuis des applications
Java.
19
Chapitre I: Introduction à Java EE
3. Vue d'ensemble des technologies principales de Java EE
En plus des technologies principales mentionnées ci-dessus, Java EE comprend également un
certain nombre d'autres technologies, telles que :
➢ JAX-WS (Java API for XML Web Services): JAX-WS est une API pour développer et
déployer des services web SOAP.

➢ JAX-RS (Java API for RESTful Web Services): JAX-RS est une API pour développer et
déployer des services web RESTful.
➢ Bean Validation: Bean Validation est une API pour la validation des données d'entrée des
applications Java.

➢ CDI (Contexts and Dependency Injection): CDI est une annotation pour la gestion des
dépendances et des contextes dans les applications Java. 20
Chapitre II: Configuration de l'Environnement de
Développement
1. Installation et configuration d'un serveur d'application Java EE
Il s’agit ici de la mise en place de l'environnement de développement nécessaire pour réaliser des
développements d'applications Java EE. Pour cela, vous aurez au moins besoin :
➢ du kit Java de développement
➢ d’un environnement de développement : par exemple Eclipse
➢ d’un serveur d’application Java EE
❑ Téléchargement des outils
➢ Java 8 JDK
Il existe deux distributions de Java par Oracle : JRE (Java Runtime Edition) et le JDK (Java
development kit). Le JRE permet uniquement l’exécution des programmes Java. Le JDK fournit
en plus un compilateur et des outils utiles aux développeurs. Il est donc nécessaire d’installer le
JDK pour développer des applications en Java.
Lien de téléchargement: [Link] 2n1 dows
Chapitre II: Configuration de l'Environnement de
Développement
1. Installation et configuration d'un serveur d'application Java EE
❑ Téléchargement des outils
➢ Eclipse IDE for Java EE Web Developpers
Il existe plusieurs distributions d’Eclipse. Il est impératif d’installer la version pour le
développement Java EE. Si vous avez déjà installé Eclipse, vérifiez dans le menu « Help > About
Eclipse » que votre version est bien « Eclipse Java EE IDE for Web Developers ».
Lien de téléchargement:
[Link]

➢ Wildfly
WildFly est un serveur d'application Java EE open-source puissant et polyvalent, développé par
Red Hat. Il est basé sur le projet JBoss Application Server (JBoss AS) et est un excellent choix
pour développer et déployer des applications d'entreprise Java.
Lien de téléchargement: [Link] 22
Chapitre II: Configuration de l'Environnement de
Développement
1. Installation et configuration d'un serveur d'application Java EE
❑ Installation des outils
L’installation du JDK dépend de votre plate-forme : il est distribué sous la forme d’un installeur
pour Windows et MacOS, et sous la forme d’un package ou d’une archive sous Linux.

Eclipse et Wildfly sont distribués sous la forme d’une archive ([Link] pour Linux et MacOS et zip
pour Windows) que vous pouvez décompresser où vous le souhaitez.

❑ Configuration de Java dans Eclipse


Après avoir lancé Eclipse, il va falloir vérifier la version de Java utilisée par l’IDE et la modifier
si nécessaire.
Pour vérifier les versions de Java disponibles dans Eclipse, ouvrez les préférences utilisateur :
menu Window > Preferences. Dans la zone de filtre en haut à gauche, saisissez jre (pour Java
Runtime Environment) et sélectionnez dans l’arbre Installed JREs 23
Chapitre II: Configuration de l'Environnement de
Développement
1. Installation et configuration d'un serveur d'application Java EE
❑ Configuration de Java dans Eclipse
Vérifiez que le JDK que vous avez
installé se trouve bien dans la liste
des JRE détectés par Eclipse. De plus
le JDK doit être coché pour indiquer
à Eclipse qu’il s’agit de
l’environnement d’exécution à
utiliser par défaut pour tous les
projets.

24
Chapitre II: Configuration de l'Environnement de
Développement
1. Installation et configuration d'un serveur d'application Java EE
❑ Configuration de Java dans Eclipse
Si vous ne trouvez pas le JDK installé dans la liste, utilisez le bouton Add… pour l’ajouter
manuellement :
▪ Pour le choix du type de JRE, choisissez Standard VM et cliquez sur Next
▪ Dans la boîte de dialogue Add JRE, cliquez sur le bouton Directory… pour sélectionner le
répertoire d’installation du JDK
▪ Eclipse s’occupe ensuite de remplir les champs nécessaires et vous n’avez plus qu’à cliquer
sur Finish

25
Chapitre II: Configuration de l'Environnement de
Développement
1. Installation et configuration d'un serveur d'application Java EE
❑ Configuration de Java dans Eclipse
N’oubliez pas de cocher la ligne de
votre JDK dans l’écran Installed
JREs pour qu’il devienne
l’environnement d’exécution par
défaut.

26
Chapitre II: Configuration de l'Environnement de
Développement
1. Installation et configuration d'un serveur d'application Java EE
❑ Intégration de Wildfly dans Eclipse
Wildfly est un serveur complet qui peut être exécuté de manière autonome (comme un serveur de
production par exemple). Cependant, pour simplifier les tâches de développement, nous allons
l’intégrer dans Eclipse afin de pouvoir le démarrer et l’arrêter directement depuis l’IDE.
Dans Eclipse Java EE, il existe une vue pour créer et gérer les serveurs. Pour ajouter cette vue, il
faut passer par le menu Window > Show View > Servers.
Vous avez maintenant la vue « Servers » ajoutée à votre perspective de développement. Faites un
click droit dans cette vue pour sélectionner New > Server.

Lors de la première utilisation, il va falloir installer les outils JBoss. Pour cela, dans la boîte de
dialogue Define a New Server, sélectionnez Red Hat JBoss Middleware > JBoss AS, Wildfly &
27
EAP Server Tools. comme type de serveur.
Chapitre II: Configuration de l'Environnement de
Développement
1. Installation et configuration d'un serveur d'application Java EE
❑ Intégration de Wildfly dans Eclipse
Cliquez ensuite sur Next et
patientez le temps pour Eclipse
de télécharger les dépendances
nécessaires. Il vous faudra
également valider la license Red
Hat. Attention il faut attendre un
peu avant que l’installation soit
effective et il vous faudra
redémarrer Eclipse.

28
Chapitre II: Configuration de l'Environnement de
Développement
1. Installation et configuration d'un serveur d'application Java EE
❑ Intégration de Wildfly dans Eclipse
Vous pouvez maintenant créer un
serveur Wildfly en sélectionnant
JBoss Community
> Wildfly 13

29
Chapitre II: Configuration de l'Environnement de
Développement
1. Installation et configuration d'un serveur d'application Java EE
❑ Intégration de Wildfly dans Eclipse
Cliquez ensuite sur Next. Dans la boîte
de dialogue Create a new Server
Adapter, laissez les valeurs par défaut et
cliquez sur Next. Dans la boîte de
dialogue JBoss Runtime, il vous faut
indiquer l’emplacement du serveur sur
votre disque. Pour cela, cliquez sur
Browse… pour sélectionner le répertoire
d’installation de Wildfly sur votre
disque.
Cliquez ensuite sur Finish
30
Chapitre II: Configuration de l'Environnement de
Développement
1. Installation et configuration d'un serveur d'application Java EE
❑ Intégration de Wildfly dans Eclipse
Vous disposez maintenant d’un serveur
dans votre vue Servers. Il ne vous reste
plus qu’à le démarrer en faisant un click
droit sur son nom et en sélectionnant
Start.

Si tout se passe bien, à la fin du


lancement, vous pourrez accéder à votre
serveur à l’adresse
[Link] Vous devez voir
s’afficher la page d’accueil du serveur.
31
Chapitre II: Configuration de l'Environnement de
Développement
1. Installation et configuration d'un serveur d'application Java EE
❑ Accès à la console d’administration du serveur
Le serveur Wildfly fournit une interface Web de configuration qui peut être utile. Par défaut,
elle est accessible à l’adresse [Link] . Pour pouvoir y accéder, il va falloir activer
un compte administrateur depuis votre machine. Pour cela, il faut utiliser les outils en ligne de
commande de Wildfly qui sont disponible dans $WILDFLY_HOME/bin. Sous Windows,
lancez le script [Link] et pour les autres systèmes d’exploitation [Link]. Puis
répondez aux questions pour créer une utilisation admin :

32
Chapitre II: Configuration de l'Environnement de
Développement
1. Installation et configuration d'un serveur d'application Java EE
❑ Accès à la console d’administration du serveur

33
Chapitre II: Configuration de l'Environnement de
Développement
1. Installation et configuration d'un serveur d'application Java EE
❑ Accès à la console d’administration du serveur
Une fois le compte
administrateur activé,
rendez-vous à l’adresse
[Link] et
saisissez le login / mot de
passe pour accéder à la
console
d’administration.

34
Chapitre II: Configuration de l'Environnement de
Développement

RESUME DE L’INSTALLATION DE L’ENVIRONNEMENT :


➢ Installation de Java JDK – 23

➢ Installation d’Eclipse IDE for Enterprise Java and Web Developers - 2024-12
➢ Installation et configuration du serveur Wildfly

35
Chapitre II: Configuration de l'Environnement de
Développement
2. Une première application
❑ Qu’est-ce qu’une application Java EE ?
Une fois le compte administrateur activé, rendez-vous à l’adresse [Link] et Une
application Web Java contient trois types de contenu :
➢ Les fichiers publics : images, pages HTML, fichiers JavaScript. Il s’agit des fichiers qui sont
téléchargés tels quels sur le navigateur client.

➢ Les ressources dynamiques : il s’agit du code Java (mais pas uniquement) qui est exécuté par
le serveur en vue de produire un contenu à renvoyer au client.

➢ Les fichiers privés : il s’agit la plupart du temps de fichiers de configuration qui sont
exploités par le serveur ou les ressources dynamiques et que l’on ne souhaite pas rendre
directement accessibles sur le Web. 35
Chapitre II: Configuration de l'Environnement de
Développement
2. Une première application
❑ Qu’est-ce qu’une application Java EE ?
Une application Web Java n’est pas directement exécutable, elle doit être déployée dans un
serveur d’application. Le serveur va prendre en charge la réception des requêtes clientes et
exécuter le code de l’application en conséquence.
❑ Création d’un projet dans Eclipse
Dans Eclipse, sélectionnez File > New > Dynamic Web Project.

36
Chapitre II: Configuration de l'Environnement de
Développement
2. Une première application
❑ Création d’un projet dans Eclipse
Saisissez le nom du projet et vérifiez
que le champ Target Runtime est bien
positionné sur le serveur que vous avez
créé. Cela indique à Eclipse que votre
application Web dépend des
bibliothèques Java fournies par
Wildfly.

Cliquez sur Next.

37
Chapitre II: Configuration de l'Environnement de
Développement
2. Une première application
❑ Création d’un projet dans Eclipse
Eclipse vous propose les répertoires de
votre projet qui contiendront les
sources Java. Nous n’en aurons pas
besoin pour l’instant. Laissez les
valeurs par défaut et cliquez sur « Next
»

Pour la dernière étape, cliquez sur la


case Generate [Link] deployment
descriptor puis cliquez sur Finish.
38
Chapitre II: Configuration de l'Environnement de
Développement
2. Une première application
❑ Création d’un projet dans Eclipse
Pour la dernière étape, cliquez sur la
case Generate [Link] deployment
descriptor puis cliquez sur Finish.

39
Chapitre II: Configuration de l'Environnement de
Développement
2. Une première application
❑ Déploiement depuis Eclipse et test de l’application
Vous disposez maintenant d’un projet dans Eclipse. Ce projet contient un répertoire
WebContent : il s’agit du répertoire racine pour le contenu des fichiers statiques de
l’application.

Ajoutez un fichier HTML dans le répertoire on clique sur Java Ressource > on fait un clic droit
sur src/main/java et on choisir New > html file

Vous pouvez par exemple créer le fichier [Link] avec le contenu suivant (Next)

40
Chapitre II: Configuration de l'Environnement de
Développement
2. Une première application
❑ Déploiement depuis Eclipse et test de l’application

Il ne vous reste plus qu’à déployer votre application dans Wildfly. Pour cela, faites un clic droit
sur le nom de votre serveur dans la vue Servers et choisissez le menu Add and Remove…. Vous
allez pouvoir choisir les applications que vous souhaitez ajouter ou supprimer de votre serveur.
41
Chapitre II: Configuration de l'Environnement de
Développement
2. Une première application
❑ Déploiement depuis Eclipse et test de l’application
Si cela, n’est pas déjà fait, il vous
reste encore à démarrer votre
serveur.

Votre application est maintenant


déployée et vous pouvez accéder
au fichier depuis votre navigateur
Web à l’adresse :
[Link]
[Link]
42
Chapitre II: Configuration de l'Environnement de
Développement
2. Introduction à Maven
Maven est un outil open source de la communauté Apache entièrement écrit en Java. Il permet
d’automatiser la gestion et la construction d’un projet Java : ce que l’on appelle communément
un outil de build.
Maven se présente comme un exécutable en ligne de commande mais il est également intégré
nativement dans les IDE les plus courants dans le monde Java : Eclipse, Intellij IDEA,
NetBeans.

❑ Pourquoi utiliser Maven ?


Nous avons vu qu’il est possible de créer et d’exécuter des projets Java EE directement dans
Eclipse. Alors pourquoi utiliser Maven ?

43
Chapitre II: Configuration de l'Environnement de
Développement
2. Introduction à Maven
❑ Pourquoi utiliser Maven ?
Si un IDE peut suffire pour gérer des projets simples, cette solution s’avère rapidement limitée :

▪ Comment partager mon projet avec d’autres développeurs quand ils n’ont pas exactement la
même configuration de poste que la mienne et qu’ils n’utilisent pas le même IDE que moi ?
▪ Comment compiler et tester mon projet en dehors d’un IDE (par exemple dans un processus
d’intégration continue) ?
▪ Comment automatiser certaines tâches répétitives et limiter ainsi les erreurs ou les oublis ?

Pour résoudre tous ces problèmes (et d’autres encore), le plus simple est d’utiliser un outil tel que
Maven.
44
Chapitre II: Configuration de l'Environnement de
Développement
2. Introduction à Maven
❑ Caractéristiques principales de Maven
Les principales phases dans Maven sont :
▪ compile : compilation du code source du projet
▪ test : compilation du code source des tests et exécution des tests
▪ package : construction du livrable (pour une application Web, il s’agit de l’archive WAR)
❑ Installation de Maven
Maven est nativement intégré dans Eclipse. Il est tout de même utile de disposer de cet outil en
ligne de commande (notamment pour mettre en place un processus d’intégration continue).
Maven se présente sous la forme d’une archive à télécharger à [Link] .

Une fois téléchargé, vous pouvez extraire ou vous voulez et ajouter le répertoire apache-maven-
3.5.2/bin dans votre chemin d’exécution.
45
Chapitre II: Configuration de l'Environnement de
Développement
Voici les étapes d’installation de MAVEN
➢Allez télécharger le fichier sur le site :
[Link]
• Ensuite cliquez sur Download

• Prendre le fichier Binary [Link] archive


• Une fois télécharger extrait le dossier
• Ensuite entré dans le bin du dossier extrait
• Une fois dans le dossier bin aller tout en haut et
cliquez sur la ligne apache-maven-3.9.9 > bin de telle sorte que
ça deviens bleu voir image suivante

• Ensuite copiez le chemin en bleu


Ensuite nous allons le copier dans la variable d’environnement
➢Nous allons allez dans démarrer
➢Dans la barre de recherche tapez : modifier les variables
d’environnement système
➢ Allez dans variable d’environnement
➢ Cliquez Path dans la partie Variable système
➢ Et ensuite sur Nouvelle

➢ Ensuite cliquez sur Nouveau


➢ Enfin coller le chemin Bin que vous avez copiez
Enfin nous allons vérifier la version dans le CMD
➢ Nous allons allez dans le CMD
➢ Nous allons l’exécuter en mode administrateur
➢ Ensuite nous allons taper mvn --version
Chapitre II: Configuration de l'Environnement de
Développement
2. Introduction à Maven
❑ Un premier projet avec Maven
Un projet Maven possède toujours un fichier [Link] à la racine du projet. Ce fichier XML est le
descripteur du projet et contient toutes les informations nécessaires à Maven pour gérer le cycle
de vie du projet.

Téléchargez et décompressez maintenant l’archive samples/[Link].

Cette archive contient le projet Maven minimal pour une application Web qui va nous servir
d’exemple.

46
Chapitre II: Configuration de l'Environnement de
Développement
2. Introduction à Maven
❑ Un premier projet avec Maven
Maven impose une arborescence minimale des fichiers afin de garantir une homogénéité
entre tous les projets.

47
Chapitre II: Configuration de l'Environnement de
Développement
2. Introduction à Maven
❑ Un premier projet avec Maven
➢ [Link]: A la racine du projet, on trouve le fichier [Link], le descripteur du projet pour
Maven.
➢ src/main: Ce répertoire contient les fichiers de l’application. On trouve au moins le sous
répertoire java contenant les sources Java. Le sous répertoire ressources accueille les fichiers qui
ne sont pas des sources Java mais qui doivent être présents avec les fichiers compilés dans
l’application finale (il s’agit souvent de fichiers de configuration). Enfin pour une application
Web, le sous répertoire webapp correspond à la racine du site Web. On retrouve à l’intérieur le
répertoire WEB-INF et le fichier WEB-INF/[Link]

48
Chapitre II: Configuration de l'Environnement de
Développement
2. Introduction à Maven
❑ Un premier projet avec Maven
➢ src/test: Ce répertoire contient les fichiers utilisés pour tester l’application. On trouve le sous
répertoire Java contenant les sources Java des tests unitaires. Le sous répertoire ressources
accueille les fichiers qui ne sont pas des sources Java mais qui sont nécessaires à l’exécution
des tests (il s’agit souvent de fichiers de configuration pour les tests).

Il existe un dernier répertoire à connaître, le répertoire target. Ce répertoire n’est pas présent dans
l’arborescence du projet hello-webapp. Il s’agit du répertoire de travail de Maven. Ce répertoire
est créé automatiquement par Maven pour stocker tous les fichiers de travail. On y trouve les
classes compilées, les fichiers sources générés automatiquement, le livrable final, les rapports
d’exécution des tests…
49
Chapitre II: Configuration de l'Environnement de
Développement
2. Introduction à Maven
❑ Un premier projet avec Maven
Le fichier [Link] est le descripteur de projet pour Maven. Il s’agit d’un fichier XML présent à la
racine du projet qui est lu par Maven pour lui fournir les informations du projet.

Ce fichier [Link] donne les informations minimales à Maven :

▪ Le projet s’appelle [Link]:hello


▪ La version actuelle est la 0.0.1 et il s’agit d’une version de travail
▪ Le projet est une application Web Java EE (war)
▪ Le projet est écrit en Java 8 et les sources sont encodées en UTF-8

50
Chapitre II: Configuration de l'Environnement de
Développement
2. Introduction à Maven
❑ Import du projet Maven dans Eclipse
Pour intégrer le projet hello dans votre espace de travail Eclipse, choisissez le menu File > Import…
puis sélectionnez dans la section Select an import source le type Maven > Existing Maven Projects.

51
Chapitre II: Configuration de l'Environnement de
Développement
2. Introduction à Maven
❑ Import du projet Maven dans Eclipse
Cliquez sur Next. Dans l’écran Import Maven Projects, cliquez sur Browse… pour sélectionner le
répertoire contenant le fichier [Link] de votre projet. Ensuite, cliquez sur Finish.

52
Chapitre II: Configuration de l'Environnement de
Développement
2. Introduction à Maven
❑ Test de l’application dans Wildfly
Comme pour le chapitre précédent, ajouter le fichier [Link] dans votre projet dans le répertoire
src/main/webapp :

53
Chapitre II: Configuration de l'Environnement de
Développement
2. Introduction à Maven
❑ Test de l’application dans Wildfly
Vérifiez que l’application est déployée en tentant d’accéder depuis votre navigateur Web à
l’adresse : [Link]

54
Chapitre II: Configuration de l'Environnement de
Développement
2. Introduction à Maven
❑ Exécution de Maven dans Eclipse
Même si vous n’avez pas installé Maven, vous exécutez la version embarquée dans Eclipse. Faites
un clic droit sur le nom du projet et sélectionnez Run As… > Maven build…. Dans la fenêtre Edit
Configuration, saisissez la cible Maven (goal) que vous voulez exécuter et cliquez sur Run.

Après l’exécution de la
cible « package », Maven
aura créé le fichier WAR
de l’application dans le
répertoire de travail
target.

55
Chapitre II: Configuration de l'Environnement de
Développement
2. Introduction à Maven
❑ Exercice: ajout du plugin Wildfly dans le fichier [Link]
Objectif: Exécuter un serveur Wildfly directement à partir de Maven
on peut utiliser le wildfly-maven-plugin. Reprenez le projet Maven d'exemple que vous venez
d’importer dans Eclipse et éditez le fichier [Link]. À la suite de la section <properties>

56
Chapitre II: Configuration de l'Environnement de
Développement
2. Introduction à Maven
❑ Exercice: ajout du plugin Wildfly dans le fichier [Link]
Objectif: Exécuter un serveur Wildfly directement à partir de Maven
Ouvrez ensuite un terminal et allez dans le répertoire de votre projet. Tapez la commande mvn
package wildfly:run

57
Chapitre III: Servlets et JSP

1. servlet
Une servlet est un composant Web de Java EE. Elle permet de traiter une requête entrante sur
un serveur et de générer une réponse dynamique. La plupart du temps, les servlets sont utilisées
pour traiter des requêtes HTTP et générer dynamiquement une réponse.
❑ Structure d’une servlet HTTP
Une servlet HTTP est une classe Java qui hérite de la classe [Link] :

58
Chapitre III: Servlets et JSP

Une servlet est un composant Web de Java EE. Elle permet de traiter une requête entrante sur
un serveur et de générer une réponse dynamique. La plupart du temps, les servlets sont utilisées
pour traiter des requêtes HTTP et générer dynamiquement une réponse.
❑ Structure d’une servlet HTTP

Une requête HTTP est identifiée par une méthode. Les méthodes HTTP standard sont : HEAD,
OPTIONS, GET, POST, PUT, DELETE, PATCH. La méthode PATCH a été ajoutée tardivement
et n’apparaît pas encore dans l’API servlet.

HttpServlet dispose donc des méthodes doGet, doPost, doPut… L’implémentation par défaut de
ces méthodes consiste à retourner un message d’erreur HTTP. Chaque servlet doit donc redéfinir
les méthodes qui la concernent.

59
Chapitre III: Servlets et JSP

❑ Structure d’une servlet HTTP

60
Chapitre III: Servlets et JSP

❑ Structure d’une servlet HTTP


Les méthodes qui vont nous intéresser sur ces classes sont :
➢ String [Link](String): Spécifie le format d’encodage
des paramètres de la requête. Par défaut, l’encodage utilisé est ISO 8859-1 (Latin-1).

➢ String [Link](String): Retourne la valeur d’un paramètre d’une


requête GET ou POST. La méthode attend le nom du paramètre et retourne sa valeur ou null
si le paramètre n’existe pas.

➢ [Link]<[Link],[Link][]>[Link]():
Retourne une Map des paramètres d’une requête GET ou POST. La clé dans la Map correspond
au nom du paramètre. La valeur est un tableau de chaînes de caractères. En effet, un paramètre
peut être présent plusieurs fois dans une requête. 61
Chapitre III: Servlets et JSP

❑ Structure d’une servlet HTTP


Les méthodes qui vont nous intéresser sur ces classes sont :
➢ void [Link](String): Positionne le type de contenu MIME de
la réponse HTTP pour informer le client du format de la réponse. Par exemple : « text/html »
pour une page HTML.
➢ void [Link](String): Indique l’encodage caractère du
flux de réponse. L’appel à [Link]() tient compte de l’encodage
positionné. Il faut donc appeler cette méthode avant [Link]()
➢ [Link] [Link](): Retourne un objet de type PrintWriter
qui permet d’écrire la réponse dans le flux de sortie. L’objet PrintWriter offre des méthodes
write pour générer une réponse au format texte (comme une page HTML).
➢ [Link] [Link](): Retourne un
objet représentant le flux de sortie en mode binaire. Cette méthode est utile lorsque la réponse
62
générée est au format binaire
Chapitre III: Servlets et JSP

❑ Structure d’une servlet HTTP

63
Chapitre III: Servlets et JSP

❑ Configuration du déploiement d’une servlet


Une servlet n’est pas une classe Java comme les autres, il s’agit d’un composant Java EE qui va
être pris en charge par le serveur d’application. Le serveur d’application a besoin de savoir pour
quelle(s) URL cette servlet sera responsable de traiter les requêtes et de fournir la réponse.

La méthode la plus simple pour configurer le déploiement d’une servlet consiste à utiliser
l’annotation @WebServlet sur la classe.

64
Chapitre III: Servlets et JSP

❑ Configuration du déploiement d’une servlet

65
Chapitre III: Servlets et JSP

❑ Configuration du déploiement d’une servlet


Pour la servlet ci-dessus, l’annotation @WebServlet précise le motif de l’URL (URL pattern)
pour lequel la servlet devra être sollicitée (dans cet exemple « /hello »). Une fois l’application
déployée dans un serveur de test en local, une requête de la forme.

devrait répondre:

66
Chapitre III: Servlets et JSP

❑ Chemin absolu d’URL dans une application Web


Le motif d’URL dans l’exemple précédent est « /hello ». Le / est obligatoire est dénote donc un
chemin absolu. Néanmoins dans une servlet, un chemin absolu commence non pas à la racine du
serveur mais à la racine de l’application.

Ainsi pour une application déployée dans le contexte racine « /monappli », une servlet dont le
motif d’URL est « /hello » sera accessible par le chemin « /monappli/hello » et non pas « /hello
».

67
Chapitre III: Servlets et JSP

❑ Motif d’URL d’une Servlet


Comme nous l’avons vu dans la section précédente, une servlet pour être déployée a besoin d’un
ou plusieurs motifs d’URL indiquant le chemin des requêtes qu’elle prend en charge. Il existe
plusieurs syntaxes qui sont toutes équivalentes :

68
Chapitre III: Servlets et JSP

❑ Motif d’URL d’une Servlet


Il est possible de donner plusieurs motifs d’URL indiquant que la même servlet peut être
sollicitée à partir de chemins différents

69
Chapitre III: Servlets et JSP

❑ Motif d’URL d’une Servlet


Enfin, il est possible d’utiliser le caractère générique *. Par contre son utilisation est limitée car
il ne peut apparaître que comme premier ou dernier élément d’un motif :

70
Chapitre III: Servlets et JSP

❑ Utilisation du fichier de déploiement [Link]


Nous avons vu que l’annotation @WebServlet_ permet d’indiquer comment une servlet doit être
déployée dans le serveur. S’il préfère, le développeur a la possibilité de spécifier ces informations
dans le fichier de déploiement [Link] plutôt que d’utiliser une annotation.

Les annotations n’ont été introduites dans le langage Java que depuis la version 5. Pour J2EE, le
recours au fichier de déploiement [Link] était la seule façon de déclarer les servlets. Ce fichier
reste donc encore aujourd’hui très utilisé par les développeurs, particulièrement pour déclarer des
servlets provenant de frameworks et de bibliothèques tierces. Pour déclarer une servlet dans une
fichier [Link], il suffit d’associer un identifiant avec le nom de la classe de la servlet. Ensuite,
on précise un ou des motifs d’URL pour cette servlet de la façon suivante .
71
Chapitre III: Servlets et JSP

❑ Utilisation du fichier de déploiement [Link]

72
Chapitre III: Servlets et JSP

❑ Utilisation du fichier de déploiement [Link]


Pour rappel, le fichier [Link] doit obligatoirement se trouver dans le répertoire WEB-INF
de l’application Web finale. Dans un projet Maven, on placera donc ce fichier dans le
répertoire src/main/webapp/WEB-INF.

73
Chapitre III: Servlets et JSP

❑ Exercice: Traitement d’un formulaire


➢ Objectif
Réaliser une application Web qui fournit une page d’accueil présentant un formulaire Web.

Le formulaire permet de saisir un code produit et le libellé d’un produit. Lorsqu’utilisateur


envoie les données au serveur, ce dernier répond par une page qui rappelle le nom du produit
et qui affiche un code barre 2D correspondant à son code.

Pour la génération du code barre, vous utiliserez une servlet fournie par une bibliothèque tierce
: barcode4j. Cette servlet génère des codes-barres à la volée

➢ Modèle Maven du projet à télécharger


[Link] 74
Chapitre III: Servlets et JSP

❑ Exercice: Traitement d’un formulaire


➢ Ajout de barcode4j dans le projet
Maven va vous permettre de récupérer automatiquement les bibliothèques qui vont vous être
utiles pour cet exercice. Ouvrez le fichier [Link] du projet et dans la balise
<dependencies>, ajoutez les deux dépendences suivantes :

75
Chapitre III: Servlets et JSP

❑ Exercice: Traitement d’un formulaire


➢ Ajout de barcode4j dans le projet
La sauvegarde du fichier [Link] dans votre IDE doit entraîner un téléchargement par
Maven de ces dépendances et leur ajout dans la configuration du projet
La servlet fournie par barcode4j s’appelle : [Link]

Une fois la servlet déclarée dans le fichier [Link], vous pouvez y accéder en passant des
paramètres HTTP détaillés dans la [Link]
Un code barre 2D correspond au type datamatrix pour la servlet barcode4J. Autrement
dit, il faut passer type=datamatrix comme paramètre à cette servlet.

76
Chapitre III: Servlets et JSP

❑ Exercice: Traitement d’un formulaire


➢ Contenu du Fichier [Link]

76
Chapitre III: Servlets et JSP

❑ Exercice: Traitement d’un formulaire


➢ Contenu du Fichier [Link]
Une fois ce fichier [Link] configuré, tu peux générer un code-barres DataMatrix en
appelant l'URL suivante dans un navigateur :
[Link]

type=datamatrix : pour indiquer que le code-barres est un [Link]=Bonjour : c’est


le message ou les données à encoder dans le code-barres.

76
Chapitre III: Servlets et JSP

❑ Exercice: Traitement d’un formulaire


➢ Mise en place du projet
Éditer le fichier [Link] du template et modifier la balise artifactId pour spécifier le nom de
votre projet.
➢ Intégration du projet dans Eclipse
L’intégration du projet dans Eclipse suit la même procédure que celle vue dans Import du
projet Maven dans Eclipse.

77
Chapitre III: Servlets et JSP

2. JSP : Java Server Pages


Nous avons vu que les servlets permettent facilement d’exécuter du code Java pour traiter une
requête HTTP. Cependant, l’API servlet n’est pas très pratique pour générer une réponse
orientée texte (telle qu’une page HTML). Les Java Server Pages (JSP) ont été la première
solution introduite pour offrir une alternative plus simple pour l’écriture de patron (template)
de réponse.
❑ Développer des JSP avec Wildfly
Wildfly est un serveur livré avec une configuration par défaut conçue pour un
environnement de production.
Pour le développement de JSP, nous allons voir qu’il est plus intéressant de configurer le
serveur de test afin qu’il prenne en compte nos modifications dans les JSP à la volée sans
qu’il soit nécessaire de redéployer l’application. Pour des raisons de performance, la prise en
compte à chaud des modifications n’est pas le comportement par défaut de Wildfly. 78
Chapitre III: Servlets et JSP

2. JSP : Java Server Pages


❑ Développer des JSP avec Wildfly
Pour activer ce comportement, il va falloir modifier la configuration du serveur. Pour cela, allez
dans le répertoire d’installation de Wildfly et ouvrez le fichier
standalone/configuration/[Link]. Aux alentours de la ligne 484 du fichier, vous allez
trouver la déclaration suivante :

79
Chapitre III: Servlets et JSP

2. JSP : Java Server Pages


❑ Développer des JSP avec Wildfly
Faites une sauvegarde de ce fichier et remplacez cette configuration par celle-ci
<servlet-container name="default">
<jsp-config development="true" check-interval="1" modification-test-interval="1" recompile-on-
fail="true"/>
<websockets/>
</servlet-container>

80
Chapitre III: Servlets et JSP

2. JSP : Java Server Pages


❑ Exercice
➢ Objectif
Créer et afficher dans un navigateur une JSP. À la racine de l’application Web (répertoire
src/main/webapp dans le projet Maven), créer un fichier [Link] avec le contenu suivant

81
Chapitre III: Servlets et JSP

2. JSP : Java Server Pages


❑ Exercice
➢ Modèle Maven du projet à télécharger
[Link]

➢ Mise en place du projet


Éditer le fichier [Link] du template et modifier la balise artifactId pour spécifier le nom de
votre projet.

➢ Intégration du projet dans Eclipse


L’intégration du projet dans Eclipse suit la même procédure que celle vue dans Import du projet
Maven dans Eclipse
82
Chapitre III: Servlets et JSP

2. JSP : Java Server Pages


❑ Exercice
Si on s’en tient à l’exercice précédent, une page JSP ressemble exactement à une page statique
(comme une page HTML) : il n’en est rien ! En fait le serveur transforme automatiquement une
page JSP en une servlet équivalente à

83
Chapitre III: Servlets et JSP

2. JSP : Java Server Pages


❑ Exercice

84
Chapitre IV: Java Persistence API (JPA)

1. Introduction à JPA : Mapping objet-relationnel (ORM), entités, relations, et


cycle de vie des entités
2. Configuration d'une source de données dans le serveur d'application
3. Utilisation de JPA pour persister et récupérer des données à partir d'une base
de données relationnelle

85
Chapitre IV: Java Persistence API (JPA)

1. Introduction

JPA (Java Persistence API) est une spécification standardisée pour le mapping objet-relationnel
(ORM) en Java. Elle fournit un ensemble d'API permettant aux développeurs de lier de manière
transparente les objets Java aux tables et colonnes d'une base de données relationnelle.

JPA offre de nombreux avantages aux développeurs Java qui travaillent avec des bases de
données relationnelles :
➢ Simplifie l'accès aux données : JPA élimine le besoin d'écrire du code SQL fastidieux et error-
prone, permettant aux développeurs de se concentrer sur la logique métier plutôt que sur les
requêtes de base de données.

86
Chapitre IV: Java Persistence API (JPA)

2. Les ORM (Object-Relational Mapping)


Les ORM sont des frameworks qui, comme l’indique leur nom, permettent de créer une
correspondance entre un modèle objet et un modèle relationnel de base de données. Un ORM
fournit généralement les fonctionnalités suivantes :
➢ génération à la volée des requêtes SQL les plus simples (CRUD)
➢ prise en charge des dépendances entre objets pour la mise à jour en cascade de la base de
données
➢ support pour la construction de requêtes complexes par programmation

87
Chapitre IV: Java Persistence API (JPA)

2. Les ORM (Object-Relational Mapping)


Le mapping objet-relationnel (Object-Relational Mapping en anglais) est une technique de
programmation qui permet l’abstraction d’une base de données relationnelle afin de simuler une
base de données orientée objet.

Le but des ORM est de faciliter la manipulation des différents objets stockés dans une base de
données relationnelle au sein d’un langage de programmation orienté objet. Ainsi, le développeur
ne manipule que des objets, la partie persistance est gérée par l’ORM.

88
Chapitre IV: Java Persistence API (JPA)

2. Les ORM (Object-Relational Mapping)

Le diagramme suivant montre qu’un


développeur peut uniquement intervenir sur les
objets et que l’ORM se charge de répercuter les
différentes modifications sur le Système de
Gestion de Base de Données (SGBD)

89
Chapitre IV: Java Persistence API (JPA)

2. Les ORM (Object-Relational Mapping)


Java EE fournit une API standard pour l’utilisation d’un ORM : JPA (Java Persistence API) (la
JSR-338). Il existe plusieurs implémentations open source qui respectent l’API JPA : EclipseLink
(qui est aussi l’implémentation de référence), Hibernate (JBoss - Red Hat), OpenJPA (Apache).

3. JDBC (Java Database Connectivity)


Toutes les implémentations des ORM en Java sont basées sur JDBC. JDBC est l’API standard pour
interagir avec les bases données relationnelles en Java. JDBC fait partie de l’édition standard et est
donc disponible directement dans le JDK. JDBC est une API de bas niveau. Cela signifie que l’on
peut réaliser une application avec toutes les fonctionnalités nécessaires pour l’interaction avec une
base de données mais au prix de l’écriture d’un grand nombre de lignes de
code (parfois complexes). 90
Chapitre IV: Java Persistence API (JPA)

3. JDBC (Java Database Connectivity)


❑ Le pilote de base de données
JDBC est une API indépendante de la base de données sous-jacente. D’un côté, les développeurs
implémentent les interactions avec une base de données à partir de cette API. D’un autre côté,
chaque fournisseur de SGBDR livre sa propre implémentation d’un pilote JDBC (JDBC driver).
Pour pouvoir se connecter à une base de données, il faut simplement ajouter le driver (qui se
présente sous la forme d’un fichier jar) dans le classpath lors de l’exécution du programme.

Des pilotes JDBC sont disponibles pour les SGBDR les plus utilisés : Oracle DB, MySQL,
PostgreSQL, Apache Derby, SQLServer, SQLite, HSQLDB (HyperSQL DataBase)…

91
Chapitre IV: Java Persistence API (JPA)

3. JDBC (Java Database Connectivity)


❑ Le pilote de base de données
Pour un projet géré par Maven, le pilote JDBC est une dépendance logicielle comme une autre.
Pour l’intégrer dans le livrable, il suffit de le déclarer dans le fichier [Link] dans la section
dependencies :

92
jdbc:mysql://localhost:3306/maBase?serverTimezone=GMT

Chapitre IV: Java Persistence API (JPA)

3. JDBC (Java Database Connectivity)


❑ L’URL de connexion et la classe des pilotes
Pour établir une connexion, nous avons besoin de connaître la classe du pilote et l’URL de
connexion à la base de données. Il n’existe pas vraiment de règle en la matière puisque chaque
fournisseur de pilote décide du nom de la classe et du format de l’URL.
Pour MySQL >= 8, il est parfois nécessaire de préciser le fuseau horaire à utiliser par le serveur
en passant le paramètre serverTimezone dans l’URI de connexion :
jdbc:mysql://localhost:3306/maBase?serverTimezone=GMT

93
jdbc:mysql://localhost:3306/maBase?serverTimezone=GMT

Chapitre IV: Java Persistence API (JPA)

3. JDBC (Java Database Connectivity)


❑ Les entités JPA
JPA permet de définir des entités (entities). Une entité est simplement une instance d’une classe
qui sera persistante (que l’on pourra sauvegarder dans / charger depuis une base de données
relationnelle). Une entité est signalée par l’annotation @Entity sur la classe. De plus, une entité
JPA doit disposer d’un ou plusieurs attributs définissant un identifiant grâce à l’annotation @Id.
Cet identifiant correspondra à la clé primaire dans la table associée.

94
jdbc:mysql://localhost:3306/maBase?serverTimezone=GMT

Chapitre IV: Java Persistence API (JPA)

3. JDBC (Java Database Connectivity)


❑ Les entités JPA

95
jdbc:mysql://localhost:3306/maBase?serverTimezone=GMT

Chapitre IV: Java Persistence API (JPA)

3. JDBC (Java Database Connectivity)


❑ L’EntityManager
Les annotations JPA que nous avons vues dans la section précédente, ne servent à rien si elles ne
sont pas exploitées programmatiquement. Dans JPA, l’interface centrale qui va exploiter ces
annotations est l’interface EntityManager.
➢ Obtenir un EntityManager
JPA est une spécification. Pour pouvoir l’utiliser, il faut avoir à sa disposition une implémentation
compatible avec JPA. Dans le cadre de ce cours, nous utiliserons Hibernate. Pour ajouter Hibernate
dans un projet Java, nous pouvons utiliser Maven pour gérer notre projet et ajouter comme
dépendances dans le fichier [Link] :

96
jdbc:mysql://localhost:3306/maBase?serverTimezone=GMT

Chapitre IV: Java Persistence API (JPA)

3. JDBC (Java Database Connectivity)


➢ Obtenir un EntityManager

97
jdbc:mysql://localhost:3306/maBase?serverTimezone=GMT

Chapitre IV: Java Persistence API (JPA)

3. JDBC (Java Database Connectivity)


➢ Template de projet JPA
Vous pouvez télécharger le projet d'exemple. Il s’agit d’un projet Maven avec une dépendance
vers Hibernate et le pilote JDBC MySQL.
Il faut fournir à l’implémentation de JPA un fichier XML de déploiement nommé [Link].
➢ Manipuler des entités à partir d’un EntityManager
À partir d’une instance d ’EntityManager, nous allons pouvoir manipuler les entités afin de les
créer, les modifier, les charger ou les supprimer. Pour cela, nous disposons de six méthodes :
find persist merge detach refresh remove

L”EntityManager va prendre en charge la relation avec la base de données et la génération des


requêtes SQL nécessaires. 98
jdbc:mysql://localhost:3306/maBase?serverTimezone=GMT

Chapitre IV: Java Persistence API (JPA)

3. JDBC (Java Database Connectivity)


➢ Manipuler des entités à partir d’un EntityManager

99
jdbc:mysql://localhost:3306/maBase?serverTimezone=GMT

Chapitre IV: Java Persistence API (JPA)

3. JDBC (Java Database Connectivity)


➢ Manipuler des entités à partir d’un EntityManager
De plus, l’implémentation JPA se charge d’extraire ou au contraire de positionner les attributs dans
l’instance de l’entité. Par exemple, un appel à find retourne bien une instance de la classe spécifiée
par le premier paramètre. Cette instance aura ses attributs renseignés à partir des valeurs des
colonnes sur lesquelles ils ont été mappés.
Pour les opérations qui modifient une entité (telles que persist ou remove), il faut que l’appel se
fasse dans le cadre d’une transaction. Grâce à la méthode [Link](), il est
possible de récupérer la transaction est de gérer la démarcation comme ci-dessous :

100
jdbc:mysql://localhost:3306/maBase?serverTimezone=GMT

Chapitre IV: Java Persistence API (JPA)

3. JDBC (Java Database Connectivity)


➢ Manipuler des entités à partir d’un EntityManager

101
jdbc:mysql://localhost:3306/maBase?serverTimezone=GMT

Chapitre IV: Java Persistence API (JPA)

3. JDBC (Java Database Connectivity)


➢ Manipuler des entités à partir d’un EntityManager
Exercices: recherchez les fonctionnalités des méthodes suivantes:
• La méthode persist
• La méthode find
• La méthode refresh
• La méthode merge
• La méthode detach
• La méthode remove

102
jdbc:mysql://localhost:3306/maBase?serverTimezone=GMT

Chapitre IV: Java Persistence API (JPA)

3. Les requêtes JPA


Les méthodes find, persist, merge, detach, refresh et remove disponibles avec une instance d’un
EntityManager permettent de gérer simplement une entité mais ne permettent pas de réaliser des
requêtes très élaborées.
Un EntityManager fournit également différentes API pour exécuter des requêtes:
➢ On crée un objet de type Query ou TypedQuery grâce à l’API
➢ Pour les requêtes paramétrées, on positionne la valeur des paramètres grâce aux méthodes
setParameter(String name, XXX xxx) ou setParameter(int position, XXX xxx)
➢ On peut optionnellement positionner plusieurs autres informations pour la requête (par
exemple, le nombre maximum de résultats pour une consultation grâce à la méthode
setMaxResults(int))
➢ On exécute la requête grâce aux méthodes executeUpdate() (pour un update ou un delete),
getSingleResult() (pour une requête SELECT ne retournant qu’un seul résultat) ou
getResultList() (pour une requête SELECT retournant une liste de résultats)
103
jdbc:mysql://localhost:3306/maBase?serverTimezone=GMT

Chapitre IV: Java Persistence API (JPA)

3. Les requêtes JPA

104
jdbc:mysql://localhost:3306/maBase?serverTimezone=GMT

Chapitre IV: Java Persistence API (JPA)

3. Les requêtes JPA

105
jdbc:mysql://localhost:3306/maBase?serverTimezone=GMT

Chapitre IV: Java Persistence API (JPA)

4. Les requêtes JPQL


Avec JPA, il est possible d’utiliser un autre langage pour l’écriture des requêtes, il s’agit du JPA
Query Language (JPQL). Ce langage est un langage de requête objet. L’objectif n’est plus d’écrire
des requêtes basées sur le modèle relationnel des tables mais sur le modèle objet des classes Java

106
jdbc:mysql://localhost:3306/maBase?serverTimezone=GMT

Chapitre IV: Java Persistence API (JPA)

4. Les requêtes JPQL

107
jdbc:mysql://localhost:3306/maBase?serverTimezone=GMT

Chapitre IV: Java Persistence API (JPA)

4. Les requêtes JPQL

Sur des exemples aussi simples que les exemples précédents, le JPQL semble très proche du
SQL. Cependant, avec le JPQL, on ne fait référence qu’aux objets et à leurs attributs, jamais au
nom des tables et des colonnes.
Syntaxe: select individu from Individu individu
108
jdbc:mysql://localhost:3306/maBase?serverTimezone=GMT

Chapitre IV: Java Persistence API (JPA)

4. Les requêtes JPQL


individu désigne la variable contenant l’instance courante de la classe Individu. Il ne s’agit
absolument pas d’un alias de table comme en SQL. La déclaration d’une variable en JPQL est
obligatoire ! Alors qu’un alias de table SQL est optionnel.

109
Chapitre VI: Développement d'une Application Web Complète

Voir fichier

111

Vous aimerez peut-être aussi