Projet site marchand avec les EJB, JPA et Spring

publicité
 Comprendre le fonctionnement d’une application J2EE
 Déploiement
 Fichiers de configurations
 Relation avec la DB
 Objets
 Application J2EE de base
 Appli marchand simple
 Répertorier les couches de présentation
Client
Session
RemoteItf
A
Client
JNDI Service
Connecteurs
datasource 1
Session
A
Entity A
Session
LocalItf
A
Session
B
EntityManager
Application 1
persiste
nce.xml
DB1
hsdbds.xml
Persistance
Unit
datasource 2
mysqlds.xml
Server EJB
DB2
EntityManager
 Objet permettant de faire le lien entre le monde objet
et la base de donnée relationnel
 Un EntityManager est relié à une Unité de Persistance.
 L’unité de persistance représente la Datasource ou la BD.
 Permet:
 De persister des classes
 De demander des classes a la BD
Obtenir l’EntityManager
 Containeur EJB
 Par injection
@PersistenceContext(unitName="myPersistenceUnit")
private EntityManager manager;
 Le nom est optionnel
 Application JPA

Unité de Persistance
(Persistence.xml)
 Une unité de persistance représente une BD utilisée
par une application
 Chaque application doit déclaré ses Unités de
Persistances
 Dans META-INF/persistence.xml
 La déclaration spécifie
 Le nom unique
 Comment l’unité est attachée à la base de donnée ou à
une datasource

Si containeur EJB, datasource obligatoire
Persistence.xml
EJB (Jboss)
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="tempdb">
<jta-data-source>java:/DefaultDS</jta-data-source>
<properties>
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
<!-- <property name="hibernate.hbm2ddl.auto" value="update"/> -->
</properties>
</persistence-unit>
</persistence>
Persistence.xml
JPA
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="testJPA2" transaction-type="RESOURCE_LOCAL">
<properties>
<property name="eclipselink.jdbc.bind-parameters" value="true"/>
</properties>
</persistence-unit>
</persistence>
Persistence.xml JPA
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<!-- Exemple de configuration hsqldb embedded -->
<persistence-unit name="hsqldb-embedded" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>entity.Person</class>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="javax.persistence.jdbc.driver" value="org.hsqldb.jdbc.JDBCDriver" />
<property name="javax.persistence.jdbc.url" value="jdbc:hsqldb:mem:MyHSQLDB" />
<property name="javax.persistence.jdbc.user" value="SA" />
<property name="javax.persistence.jdbc.password" value="" />
<!-- Property propre a eclipselink -->
<!-- DDL generation type : drop-and-create-tables, create-tables, none -->
<property name="eclipselink.ddl-generation" value="create-tables"/>
<!-- output mode : database, sql-script, both -->
<property name="eclipselink.ddl-generation.output-mode" value="database"/>
</properties>
</persistence-unit>
DataSources
 Représente une source de données pour les
applications
 Partageable entre plusieurs applications
 Déclaré au niveau du serveur
 Accessible par un nom unique
 La déclaration spécifie
 Le nom unique
 Comment la datasource est attachée à la base de donnée
JBoss
 Datasources
 Fichiers se terminant par ‘–ds.xml’
 Examples dans docs/example/jca
 Datasource prédéfinie:


DefaultDS (jndi: java:/DefaultDS, file: deploy/hsqldb-ds.xml)
Hsqldb, avec serveur lancé/arreté par Jboss
 ORM/EJB3/Persistence.xml
 Jboss utilise Hibernate
 Persistence.xml peut contenir des indications a
destination de Hibernate
 Servlet
 JSP




JSF - ok
Struts - ok
GWT - ok
Tapestry – ok
 Stripes
 MVC
 Wicket
 MVC – action controleurs JavaFX
 moyennement utilisé
 Flex
 fort eloigne des EJBs
 Jboss Seam
 que pour Jboss ?
 Spring - fait
 Autres ?
 Rechercher sur le web !
 Oldies
 Baracuda
 Maverick
Questions
 Le framework est-il toujours d’actualité ?
 Encore maintenu ?
 Développement actif ?
 Date de création, date de la dernière release, …
 Version actuelle ?
 Maturité (prototype, éprouvé, récent, …)
Questions
 Open source ou propriétaire ?
 Principe de fonctionnement ?
 Ecrire une page simple
 Ecrire un formulaire
 Comment récupérer la valeur des champs ?
 Validation des champs ?

Sur le serveur, dans le browser, …
Questions
 Comment mettre en œuvre le framework ?
 Library nécessaires ? Serveurs supportés ? Configuration
?
 Connexion avec les EJB ?
 Tutorial de démarrage
 Exemple simple d’application
Téléchargement