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