Cours2 Java Avance Et Jee A2
Cours2 Java Avance Et Jee A2
Cours2 Java Avance Et Jee A2
Cours 2
Java Avancée et Initiation à JEE
Pr Rachid ALAOUI
Plan
1· Architectures et présentation de l’écosystème JEE
2
1. Architectures et présentation de
l’écosystème JEE
Plan
- Exigences d’un projet Informatique
- la plateforme Java EE
8
Présentation et historique
Sun Microsystems, désormais Oracle Corporation,
propose pour cela la plateforme Java Enterprise Edition ou
Java EE, véritable référence pour le développement
d’applications supportant en standard
la programmation,
la persistance des données,
les transactions,
la sécurité
le déploiement de projets sur serveur applicatif.
Présentation et historique
12
Présentation et historique J2EE
La vue (View) : La vue c’est ce que voit l’utilisateur
crée la représentation visuelle de la pièce à partir des
données du modèle.
(En général; Les vues sont des pages jsp, xhtml…)
13
14
Présentation et historique J2EE
Problème: Les développements par couches, de type
Modèle Vue Contrôleur (MVC), ne facilitent pas la
compréhension de l’ensemble, et les technologies Servlet et
JSP ne sont pas adaptées pour un développement rapide.
15
Composants et architectures
Application monolithique
Une application monolithique est un programme constitué d’un
seul bloc et s’exécutant sur une seule machine.
16
Composants et architectures
Architectures « client/serveur »
Dès l’apparition des réseaux, ces applications ont cherché à
évoluer et ont abouti à des architectures dites « client/serveur »,
permettant de séparer la partie cliente et de regrouper la partie
applicative sur un serveur.
Les années 80, architecture 2 tiers
Principe
Architectures Client-Serveur
nécessite la création d’un
protocole de communication
entre le client et le serveur.
17
Composants et architectures
Problème Architectures « client/serveur »
- Pour les systèmes d’information d’entreprise ces solutions
restent trop limitées :
Handicape majeur vue le manque de séparation entre les
différents éléments qui le constituent.
- Manque de standards qui a
poussé la communauté au
concept de « brique » et de
séparation des tiers afin
d’optimiser leurs
développements.
18
Composants et architectures
Application multi-tiers
Dans le milieu professionnel, les applications doivent être plus robustes et
travaillent généralement sur de gros volumes de données.
19
Composants et architectures
Application multi-tiers: Modèle 3-tiers:
- Plusieurs applications différentes avec une même logique métier
- Mettre en place
facilement des
applications
« distribuées » dans
un environnement
hétérogène.
20
Composants et architectures
Application multi-tiers: Modèle 3-tiers:
Architecture 3 tiers objet
21
Composants et architectures
Application multi-tiers : Modèle 3-tiers
Navigateur: pour représenter l’application sur la machine cliente,
Serveur web: Pour la gestion de la logique de l’application
Serveur de base de données: Pour le stockage des données.
22
Composants et architectures
Application multi-tiers : Modèle 3-tiers
23
Composants et architectures
Le modèle 3-tiers
24
Composants et architectures
Le modèle n-tiers
L’architecture n-tiers est une généralisation du modèle 3-tiers
qui prend en compte l’évolutivité du système et évite les
inconvénients de l’architecture 3-tiers vus précédemment.
Composants et architectures
Le modèle n-tiers
L’interconnexion entre ces tiers est le grand problème de cette
architecture.
26
Composants et architectures
Le modèle n-tiers
Application en couches
1. Couche présentation : gère le rendu des données
Frameworks MVC Struts , JSF, Spring
2. Couche Application: Classes simple Java et design patterns
3. Couche métier (Business Layer)
Service
Métier : contrôleur métier
Technique
Objet Métier persistant (EJBs)
4. Couche d’accès aux données (Persistance layer) permet d’accéder
aux données
Liaison avec entrepôt de données
Gestion des opérations CRUD : Create, Read, Update, Delete.
Données (Physical Layer)
Entrepôt des données de l’application
Schema modele physique de base de données, schema XML,… 27
28
DÉTAILS DES COUCHES
Couche présentation
La couche présentation est liée au type de clients utilisés:
Client riche: utiliser l’ensemble des outils et des librairies mis à
disposition pour ce type de client (plus particulièrement J2SE).
Applications web : Dans une architecture Java EE, on utilise
principalement des applications web pour l’interface utilisateur.
29
30
DÉTAILS DES COUCHES
Couche application
- Médiateur entre la couche présentation et la couche métier, et contrôle
l’enchaînement des tâches.
31
34
Les conteneurs Java EE
Les serveurs Java EE proposent plusieurs types de conteneurs
(containers) pour chaque type de composant.
35
36
API et services Java EE
1. Java Servlet (Technologie Java EE Conteneur Web)
Ce service Java EE s’exécute dans le conteneur Web et propose un
ensemble de classes de gestion des échanges HTTP de type requête
réponse.
37
40
API et services Java EE
3. JavaServer Pages Standard Tag Library (JSTL)
(Technologie Java EE Conteneur Web)
La technologie JavaServer Pages Tag Library (JSTL) est encapsulée
dans des pages JSP et propose une librairie de balises XHTML
standardisées. Ces balises proposent de gérer les conditions et
itérations, l’internationalisation, les affichages HTML ou encore
l’accès aux bases de données.
41
JDBC est utilisée lorsque nous devons accéder à une base de données
dans une Servlet, page JSP, page JSF ou autres.
43
44
API et services Java EE
8. Enterprise JavaBeans (EJB) (Technologie Java EE -
Conteneur EJB)
Les composants Enterprise JavaBeans s’exécutent dans le
conteneur (couche ou tiers Métier): sont des classes composées de
champs et de méthodes d’accès.
Les beans entité (les entity beans): assurent la persistance des données
46
Les outils préconisés par Oracle
Le consortium Java EE Oracle propose un ensemble d’outils
recommandés en fonction de chaque service :
● Le kit de développement proposé par Oracle/Sun Microsystems
JDK 1.6 et supérieur.
● Le serveur Java EE GlassFish v3 ou plus compatible Java EE 6.
● L’implémentation de persistance JPA, EclipseLink.
● Le SGBD intégré en standard avec le serveur Java EE nommé
JavaDB (SGBD Derby).
● L’outil de développement également appelé IDE, NetBeans.
Remarque:
Ces outils recommandés par Oracle seront ainsi utilisés car ils sont
compatibles, stables et conformes à toutes les spécifications
Java EE 6.
47
49
50
Le client envoie la requête : Méthode POST
51
Ligne de Status
Date du serveur
Nom du Serveur
Dernière modification
Type de contenu
Sa taille
52
Application de communication Client-Serveur
- Dans l’édition J2SE vous avez vu comment développer une application autonome
ou une applet avec les fonctionnalités standard de Java.
- L’édition élargie J2EE comporte des spécifications supplémentaires concernant le
développement de ce que l’on nomme des servlets(réunion de serv, début du mot
serveur et de let, par analogie avec applet).
53
Solution 2:
Le client peut communiquer au serveur
avec des pages JSP (JavaServer Pages):
Pages HTML dans lesquelles on peut
introduire des séquences d’instructions
Java.
54
2.2 LE PROTOCOLE HTTP:Application de communication Client-Serveur
Solution 1: Servlet
Une servlet va se présenter comme une classe dérivée de la classe
HttpServlet fournie dans le package javax.servlet.
import java.io.* ; import javax.servlet.* ; import
javax.servlet.http.* ;
public class BonjourServ extends HttpServlet
{
public void doGet (HttpServletRequest req,
HttpServletResponse rep)
throws IOException, ServletException
{
rep.setContentType ("text/html") ;
PrintWriter page = rep.getWriter() ;
page.println ("<html>") ; Notre servlet affiche le message Bonjour
page.println ("<head>") ; dans une page HTML ayant pour titre
page.println ("<title> Servlet Bonjour "Servlet Bonjour".
</title>") ;
page.println ("</head>") ;
page.println ("<body>") ; 55
56
LE PROTOCOLE HTTP:Application de communication Client-Serveur
Solution 1: Servlet
Transmission d’informations (nommées alors paramètres) du client au serveur:
Le concepteur de la servlet peut choisir entre deux démarches : URL ou formulaire HTML
• Demander au client d’incorporer ces paramètres directement dans l’URL fournie au navigateur ; dans
ce cas, leurs valeurs seront récupérées par la méthode doGet et déjà rencontrée,
• Récupérer ces informations auprès du client par le biais d’un "formulaire HTML" et lancer la servlet
depuis ce formulaire.
57
58
Le protocole HTTP et Communication Client Serveur
Solution 1: Servlet
Exemple:
Pour créer une servlet nommée BonjourVous récupérant un seul paramètre: un prénom
fourni par l’utilisateur et qui l’affiche à la suite du texte bonjour dans une page HTML.
?prenom=hassan : précise que l’on donne au paramètre nommé prenom la valeur hassan
59
Solution 1: Servlet
Utilisation d’un formulaire HTML
En définitive, voici ce que pourrait donner la page HTML créant un formulaire de lancement
de la servlet BonjourVous:
<html>
<head>
<title> Servlet Bonjour Avec Formulaire </title>
</head>
<body>
<form action = http://localhost:8080/examples/servlet/BonjourVous method="GET">
Vous vous appelez <input type="text" size=24 name="prenom" value =""> <br> <br>
<input type="submit" value="OK">
</form>
</body>
</html>
60
Le protocole HTTP et Communication Client Serveur
Solution 2: Pages JSP
un JSP est une page HTML dans laquelle sont introduits des morceaux de code Java
nommés ‘’éléments de script’’
Exemple: une page JSP: fichier HTML contenant un scriptlet (code java)
Exemple: PageBonjour.jsp
Les JSP sont enregistrés avec l’extension
.jsp. <html>
Pour pouvoir exéctuer un JSP, une <head>
machine serveur doit disposer d’un <title> JSP Bonjour </title>
interpréteur de JSP (ou "moteur de JSP"). </head>
<body>
<% out.println ("BONJOUR") ;
%>
</body>
</html>
Une requête pour l’appel de la page jsp:
http://localisationServeur/localisationJSP/nomJSP.jsp?ParamètresEventuels
61
62
Le protocole HTTP et Communication Client Serveur
Solution 2: Pages JSP
Utiliser un formulaire HTML
Autre façon d’appel JSP :
Formulaire de lancement du JSP bonjourVous
<html>
<head>
<title> Appel de JSP bonjourVous </title>
</head>
<body>
<form action = http://localhost:8080/examples/bonjourVous.jsp method=GET>
Vous vous appelez <input type="text" size=24 name="prenom" value ="">
<input type="submit" value="OK">
</form>
</body>
</html>
63
64
Les différents éléments de script d’un JSP Solution 2: Pages JSP
Dans l’élément de script <%= expression %>, on peut placer n’importe quelle expression valide en Java
Exemple:
BONJOUR <%= out.getParameter (prenom) %>
65
Le respect de ces conventions rend possible la connexion de JavaBeans par des outils de
développement.
66
Utilisation de JavaBeans dans des JSP Solution 2: Pages JSP
Exemple: La classe nommée PointBean comportant trois propriétés :
abs(abscisse), ord(ordonnée) et norme(distance du point à l’origine).
package beans ;
public class PointBean
{ public PointBean ()
{ abs=0 ; ord=0 ; }
public int getAbs ()
{ return abs ; }
public int getOrd ()
{ return ord ; }
public void setAbs (int abs)
{ this.abs = abs ;}
public void setOrd (int ord)
{ this.ord = ord ; }
public double getNorme ()
{ return Math.sqrt (abs*abs +ord*ord) ;}
private int abs, ord ;
}
67
68
Solution 2: Pages JSP
69
3. Frameworks de présentation
(Spring et JSF)
Plan
3.1 Spring
● Rappels fondamentaux sur Spring
o Framework
o Architecture du framework
o Modèle de programmation
o Modèle de configuration
● Présentation de Spring Boot
o Positionnement dans le projet Spring
o Historique et versions
3.2JSF
3.1 Spring
Qu'est ce que spring
Spring est un framework léger pour la création d'applications Java
Spring utiliser pour créer n'importe quelle application en Java
(applications autonomes, Web ou JEE),
contrairement à de nombreux autres frameworks (tels qu'Apache
Struts, qui est limité aux applications Web).
• Spring 1.x : 1ere version publiée avec une documentation de référence officielle.
Il est composé de 7 modules
– Spring ORM :
prise en charge de Hibernate,
iBATIS et Java Data Objects (JDO)
Spring AOP :
Spring Web fait partie de l'écosystème Spring et propose des solutions pour
créer des applications web.
- Binding et Validation : Spring Web MVC facilite le binding des données des
formulaires aux objets Java, ainsi que leur validation.
Spring 3.2.x :
cette version possède les fonctionnalités suivantes :
– Prise en charge du traitement des demandes asynchrones basé sur Servlet 3.
Java EE 6 et supérieur est désormais considéré comme la base de Spring Framework 4.0
• Spring 5.0.x :
il s'agit d'une version majeure.
L'ensemble de la base de code du framework est basé sur Java 8 et est entièrement compatible
avec Java 9 depuis juillet 2016.2
– Prise en charge complète de la signature Servlet 3.1 dans les implémentations de filtre
fournies par Spring
SpEL offre des fonctionnalités similaires à celles que vous pourriez trouver dans les
langages d'expression comme EL (Expression Language) de JSP, mais avec des capacités
étendues et une meilleure intégration dans l'écosystème Spring.
- Types littéraux: SpEL prend en charge plusieurs types littéraux, comme les chaînes de
caractères ('Hello World'), les nombres (intégraux, flottants, etc.), les booléens (true,false), ...
- Opérateurs:
SpEL prend en charge un large éventail d'opérateurs, tels que :
les opérateurs de comparaison (==, <, >, etc.),
les opérateurs logiques (and, or, not),
les opérateurs mathématiques (+, -, *, /, %, ^),
et d'autres.
- Opérateurs ternaires:
SpEL prend en charge l'opérateur ternaire standard (a ? b : c).
- Variables:
Vous pouvez référencer les variables par leur nom, généralement définies
dans un contexte d'évaluation.
Par exemple, #{#someVar}
- Méthodes intégrées: SpEL offre des méthodes utiles pour manipuler des
données, par exemple pour vérifier si une chaîne est vide, pour concaténer
des chaînes, et d'autres.
-…
MVC dans le niveau Web
Pour développer des applications Web, le modèle MVC est la solution pratique plus
populaire. Spring est progressivement passé d'un simple framework Web à une
implémentation MVC complète.
La technologie des frameworks Web a évolué rapidement: besoin de frameworks Web prenant
en charge HTML5, JavaScript et CSS3.
Parmi les solutions: développement d'applications Web à l'aide de Spring MVC
Cependant, sans Spring Boot, il reste encore beaucoup de travail à faire par le
développeur pour que les choses fonctionnent.
Quelques défis que vous serez confrontés une fois que vous aurez commencé à
développer une application Web basée sur Spring :
- Acquérir une compréhension de Servlet et du descripteur de déploiement
associé web.xml
Vous n'auriez pas besoin de définir des configurations XML compliquées ou d'effectuer un
déploiement de serveur d'application ou d'autres jongleries techniques.
Toutes ces pièces du puzzle seraient résolues par un magicien expérimenté = Spring Boot.
Spring Boot a été introduit en tant que sous projet de Framework Spring pour donner aux
développeurs une expérience de démarrage rapide avec une simlification de configuration.
Spring Boot résout à quel point de manière transparente plusieurs problèmes de configuration et
d'intégration.
3.2 Framework JSF
JavaServer Faces (JSF) est un framework MVC (Modèle-Vue-Contrôleur)
pour construire des applications web basées sur des composants en
Java.
JSF est est intégré dans la plateforme Java EE.
Architecture JSF
•Modèle-Vue-Contrôleur (MVC)
• Modèle : Gère les données de l'application.
• Vue : Représente l'interface utilisateur.
• Contrôleur : Gère la réception des requêtes utilisateurs et la réponse.
Managed Beans
Beans Java qui stockent les données pour les vues JSF.
Définis généralement avec les annotations @ManagedBean et @ViewScoped,
@SessionScoped, etc.
Navigation
Définit comment l'application passe d'une page à une autre.
Convertisseurs et validateurs
Convertisseurs : Transforme les types de données d'une forme à une autre
(ex: String à Date).
Validateurs : Assure que les données saisies respectent certaines règles.
Navigation
Définissez des règles de navigation pour déterminer les transitions de page.
Validation et conversion
Utilisez des validateurs intégrés ou créez des validateurs personnalisés.
Utilisez des convertisseurs intégrés ou créez des convertisseurs personnalisés.
4. Initiation au Framework de
persistance (Hibernate)
Plan
- Présentation, Normes et standards JPA
- L’Entity Manager ou gestionnaire d’entités
- Mise en place du mapping objet-relationnel
- Gestion des relations : @OneToOne @OneToMany @ManyToOne @ManyToMany
- Java Persistence Query Language (JPQL)
- Ingénierie de reconstruction
Présentation
Un développeur Java doit alors maîtriser plusieurs concepts:
- Modélisation UML lors de l’analyse
- Programmation objet
- Analyse et systèmes de gestion de bases de données relationnelles
Mélange de Concepts:
Entraîne des confusions et erreurs de programmation en vue de complexité des domaines
de compétences à maîtriser.
100
Présentation
Pour améliorer le développement de la couche de sauvegarde des données,
plusieurs bibliothèques ou frameworks de persistance sont apparus avec les
principaux langages.
Ces outils sont nommés ORM pour Object Relationnal Mapping ou outils
de gestion du mapping objet relationnel et relationnel objet.
101
Persistance en JAVA
Un développeur Java parle de classes, attributs, méthodes, héritages, annotations,
encapsulations ou autres,
Tandis qu’un spécialiste de base de données utilise les termes entités, tables, jointures,
modèle conceptuel des données ou autres.
Le dialogue qui s’ensuit entre les deux personnes devient alors très lourd et porte à
confusion.
Problème
Deux concepts presque
similaires sont utilisés
en fonction du
domaine
mais ne possèdent pas
la même définition :
le domaine de
modélisation utilise des
classes et
le domaine des bases de
données, des tables.
102
Spécification JAVA persistence API
EclipseLink est l’implémentation Open
Source de référence pour JPA 2.0 permet
le stockage d’objets dans une base de
données relationnelle
JPA utilise l’API JDBC pour les accès SQL et pour cacher la couche d’accès aux données
relationnelles. Toutes ces classes, interfaces et annotations de gestion sont empaquetées dans le paquetage
javax.persistence.
103
104
Mise en place du mapping objet-relationnel
La mise en place commence par le téléchargement des librairies nécessaires à l’utilisation
de JPA :
● eclipselink.jar : librairie de gestion JPA téléchargée à partir du site de l’éditeur
http://www.eclipse.org/eclipselink/downloads/
105
public Enseignant()
{
}
// getters et setters
}
106
Mapping objet relationnel
Une classe qui doit devenir une entité persistante doit respecter les règles suivantes :
● La classe doit être annotée avec @javax.persistence.Entity ou avec la notation
correspondante dans le fichier XML.
● Un attribut de la classe doit être annoté avec @javax.persistence.Id pour être utilisé
comme clé primaire.
● La classe entité doit avoir un constructeur par défaut sans paramètre avec une
visibilité publique ou protégée. La classe peut avoir d’autres constructeurs également
(par paramètre, initialisation ou copie).
● Une classe entité ne doit pas être utilisée comme final. Aucune méthode ou variable de
l’entité ne doit être de type final.
● Si une instance de la classe entité doit être passée par valeur ou utiliser des
fonctionnalités de sauvegardes distantes, l’entité doit alors implémenter l’interface
Serializable.
107
108
Optimisation du mapping
1. @Table
L’annotation @javax.persistence.Table permet de changer le nom de la table associée à
l’entité.
Sans la présence de cette annotation, la table reprend le nom de la classe avec tous les
caractères en majuscules
Code : jpa01.Enseignant.java
package jpa01;
...
@Entity
@Table(name="ens",schema="web
cole")
public class Enseignant {
@Id
private Long idEnseignant;
private String identifiant;
private String motdepasse;
public Enseignant()
{
System.out.println(« ds constructeur
");
}
// getters et setters
...
} 109
Optimisation du mapping
1. @Table
L’annotation @Table possède plusieurs attributs Code : jpa01.Enseignant.java
: package jpa01;
● name : permet de préciser le nom de la table. ...
● schema : précise le schéma de la table. @Entity
● uniqueConstraints : précise les contraintes @Table(name="ens",schema="webcole")
public class Enseignant {
d’unicité sur une ou plusieurs colonnes. @Id
● catalog : précise le catalogue de la table. private Long idEnseignant;
private String identifiant;
private String motdepasse;
public Enseignant()
{
System.out.println("ds constructeur ");
}
// getters et setters
...
}
110
Optimisation du mapping
2. @SecondaryTable
L’annotation @javax.persistence.SecondaryTable est utilisée lorsqu’une entité doit être
mappée vers plusieurs tables. L’annotation @SecondaryTable permet de faire le lien
avec une table secondaire et @SecondaryTables avec plusieurs tables secondaires.
@Entity
@SecondaryTables({
@SecondaryTable(name="ensa"),
@SecondaryTable(name="fac")
})
public class Enseignant {
@Id
private Long idEnseignant;
@Column(table="ensa")
private String identifiant; l’attribut identifiant dans une table secondaire
@Column(table="fac") nommée ensa et
private String motdepasse;
public Enseignant() l’attribut motdepasse dans une autre table
{
secondaire nommée fac.
System.out.println("Dans le
constructeur de la classe Enseignant");
} Les liens sont alors automatiquement réalisés par
// getters et setters} la référence à la clé primaire idEnseignant.
111
Optimisation du mapping
2. @SecondaryTable
Nous devons ensuite préciser dans l’entité quels attributs seront stockés dans les tables
secondaires par l’intermédiaire de l’annotation @Column.
@Entity
@SecondaryTables({
@SecondaryTable(name="ensa"),
@SecondaryTable(name="fac")
})
public class Enseignant {
@Id
private Long idEnseignant;
@Column(table="ensa")
private String identifiant;
@Column(table="fac")
private String motdepasse;
public Enseignant()
{
System.out.println("Dans le
constructeur de la classe 112
Enseignant");
Optimisation du mapping
3. @Id et @GeneratedValue
- La clé primaire est un élément essentiel dans une base de données relationnelle.
Cette clé primaire permet d’identifier chaque enregistrement de manière unique.
- La clé ne doit pas être nulle et JPA requiert que chaque entité possède sa propre clé,
composée d’un attribut ou de plusieurs attributs (clé composite).
Cette clé primaire ne peut plus être mise à jour par la suite.
113
Optimisation du mapping
3. @Id et @GeneratedValue
L’annotation @GeneratedValue peut avoir quatre valeurs :
● AUTO : c’est la valeur par défaut qui laisse la génération automatique de la clé par
l’outil de persistance. Cette génération automatique est alors adaptée au SGBD utilisé et
peut donc changer en fonction de la base de données.
● TABLE : cette valeur utilise une table dédiée qui stocke les clés des tables générées.
La clé est incrémentée, chaque fois qu’une nouvelle instance est créée.
@GeneratedValue(strategy=GenerationType.IDENTITY)
114
Optimisation du mapping
3. @Id et @GeneratedValue Code : jpa01.Enseignant.java
Exemple: Utiliser le type IDENTITY très ...
pratique permettant de générer une clé @Entity
primaire de type auto-incrément afin de public class Enseignant {
gérer le compteur des clés @Id
@GeneratedValue(strategy=Generatio
nType.IDENTITY)
private Long idEnseignant;
private String identifiant;
private String motdepasse;
public Enseignant()
{
System.out.println("Dans le
constructeur de la classeEnseignant");
}
// getters et setters
}
115
- Nous pouvons utiliser les méthodes CRUD et retrouver une entité par son
identifiant, la supprimer, la modifier ou autres. Mais la recherche par identifiant est
limitée et ne permet pas de réaliser des requêtes complexes.
Pour réaliser ce type de requête, JPA propose un langage de requêtes interactif nommé
JPQL. JPQL permet de réaliser des requêtes indépendamment de la base de données
utilisée.
116
Java Persistence Query Language (JPQL)
Le Java Persistence Query Language (JPQL) est un langage de requête orienté
objet utilisé pour interroger des entités dans le cadre de la spécification Java
Persistence API (JPA).
JPQL est similaire à SQL, mais il fonctionne sur des objets, des attributs
d'objets et des associations d'objets plutôt que sur des tables et des colonnes.
Sélection de données
JPQL désigne les entités dans les requêtes par leur nom.
La clause SELECT permet de préciser une classe entité (et non pas une table)
par son nom
La structure de ce type de requête ‘JPQL’ est très proche d’une requête SQL mais avec
deux différences : la clause FROM définit une entité et non une table et l’utilisation d’un
alias, appelé variable d’identification, est nécessaire en JPQL.
Exemple:
SELECT p FROM Person p WHERE p.age > 25
Dans cet exemple, p est un alias pour l'entité Person, et nous interrogeons sur
l'attribut age de cette entité.
118
Principaux concepts de JPQL
Entités:
Dans JPQL, les requêtes sont basées sur des entités (classes Java annotées avec
@Entity).
Alias:
Les entités dans les requêtes JPQL peuvent être aliassées pour une utilisation plus
concise, comme on le voit avec p dans l'exemple précédent.
Path Expressions:
Les attributs des entités peuvent être navigués en utilisant des expressions de
chemin, par exemple, p.address.city.
Types de requêtes
1.Requêtes de sélection (SELECT): utilisées pour récupérer des données.
2.Requêtes de mise à jour (UPDATE): utilisées pour mettre à jour des données.
119
Elle est matérialisée dans un document qui reprend l’ensemble des enjeux,
objectifs, analyses, actions et procédures faisant parti de cette stratégie.
Dans le contexte de Java EE, JAAS est souvent utilisé pour sécuriser les
applications d'entreprise.
Authentification et Autorisation
•Authentification: Processus de vérification de l'identité d'un utilisateur.
•Autorisation: Processus de détermination des actions qu'un utilisateur authentifié
peut ou ne peut pas effectuer.
Intégration JAAS avec Java EE
Dans un environnement Java EE, JAAS est souvent intégré au conteneur (comme
Tomcat, WildFly, GlassFish).
Parmi les application, Le SSL est utilisé pour sécuriser les transactions
bancaires, le transfert de données et les informations de connexions.
jsp
Browser EJB
html entity
stateless
thymleaf
component
Contrôle transport (SSL) …
Utilisateur
L’utilisateur d’une application est identifié par des « pièces d’identité »,
(credentials en anglais), qui prouvent son identité
Le plus souvent la saisie d’un nom de login et d’un mot de passe prouve
l’identité d’un utilisateur
Rôle:
Des rôles différents pour chaque ressource peuvent être attribués
aux utilisateurs et aux groupes d'utilisateurs.