Quick Upload

Loading...
Flash Player 9 (or above) is needed to view slideshows. We have detected that you do not have it on your computer.To install it, go here
Post to Twitter Post to Twitter
Share on Facebook
Myspace Hi5 Friendster Xanga LiveJournal Facebook Blogger Tagged Typepad Freewebs BlackPlanet gigya icons

Presentation JPA

from jsbournival, 2 years ago Add as contact

2124 views | 0 comments | 1 favorites | 1 embeds (Stats)

Desc:

Embed customize close
 

Categories

Technology

Groups/Events

More Info

This slideshow is Public

Views: 2124 Comments: 0 Favorites: 1 Downloads: 100

View Details: 2109 on Slideshare 15 from embeds
Most viewed embeds (Top 5): More
All Embeds: Less
Flagged as inappropriate Flag as inappropriate

Flag as inappropriate

Select your reason for flagging this slideshow as inappropriate.

If needed, use the feedback form to let us know more details.

Slideshow Transcript

  1. Slide 1: Java Persistence API JS Bournival 5 juin 2006
  2. Slide 2: Agenda  Présentation  Les mappings de base  Relations  Héritage  EntityManager  Queries  Transactions  Demo  Support et outils  Références  Questions Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 2 2006
  3. Slide 3: Un peu d’histoire … Entity Beans EJB 1.0 -> 2.1  Complexité  La courbe d’apprentissage trop prononcée  Modèle de programmation non-intuitif  Performance  Le coût pour effectuer certaines requêtes était hors de proportions, le cycle de vie du container devenait un boulet Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 3 2006
  4. Slide 4: Un peu d’histoire … Les équipes IT se sont de plus en plus tourné vers d’autres produits sur le marché:  Hibernate  Le plus répandu dans la communauté présentement. Toutefois, la responsabilité de compatibilité avec différents serveurs d’application revient à la communauté.  JDO  Bien que JDO soit un standard, appuyé par la JSR 243 (JDO 2.0), cette technologie a reçu bien peu d’appui.  Produits commerciaux (ex. TopLink)  API propriétaires, onéreux, non-standard … Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 4 2006
  5. Slide 5: Les besoins Clairement, 2 grands besoins se dégagèrent, répondant à l’industrie et aux développeurs: Avoir une API simple d’utilisation, attrayante pour les 3. développeurs, appliquant les techniques apprises des cadres d’applications de la communauté open source. Avoir un standard respecté par les fournisseurs de serveurs 5. d’applications. Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 5 2006
  6. Slide 6: EJB 3.0 vs. Java Persistence API Le standard tant souhaité, émerge avec la JSR 220, soit EJB 3.0. Cette spécification se divise en 2 parties: EJB 3.0, modèles de composants d’affaires (SLSB, SFSB, MDB)  JPA, Java Persistence API  Toutefois, cette spécification sera scindée en 2, de façon à faire évoluer la JPA, qui n’a plus rien à voir avec les EJB, seule de son côté. Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 6 2006
  7. Slide 7: Java Persistence API: Quoi de neuf? On a littéralement évacué la complexité Plus besoin de ces innombrables interfaces (Home, Remote, Local …)  On peut l’utiliser tant à l’extérieur, qu’à l’intérieur d’un container JEE  Chaque entité est maintenant un simple POJO *  Les mappings sont facilement mis en place, à l’aide d’annotations (Java SE  5.0) * POJO – n.m. [pôdjô] POJO is an acronym for Plain Old Java Object, and is favoured by advocates of the idea that the simpler the design, the better. - Wikipedia. \"We wondered why people were so against using regular objects in their systems and concluded that it was because simple objects lacked a fancy name. So we gave them one, and it's caught on very nicely.\" - Martin Fowler Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 7 2006
  8. Slide 8: Agenda  Présentation  Les mappings de base  Relations  Héritage  EntityManager  Queries  Transactions  Demo  Support et outils  Références  Questions Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 8 2006
  9. Slide 9: Java Persistence API: Mappings de base EMP @Entity @Table(name=\"EMP\") ID EMP_NAME NAME SALARY PIC public class Employee { « BLOB » @Id private int id; @Column(name=\"EMP_NAME\") private String name; private double salary; @Lob private byte[] pic; // getters & setters ... } Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 9 2006
  10. Slide 10: Agenda  Présentation  Les mappings de base  Relations  Héritage  EntityManager  Queries  Transactions  Demo  Support et outils  Références  Questions Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 10 2006
  11. Slide 11: Relations 4 types de relations à définir entre les entités de la JPA:  One to One  Many to One  One to Many  Many to Many Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 11 2006
  12. Slide 12: Relationship: Many to One @Entity @Entity @Table(name=\"EMP\") public class Department { public class Employee { @Id private int id; @Id private int id; private String dname; // getters & setters @JoinColumn(name=\"DEPT_ID\") @ManyToOne ... private Department d; } // getters & setters ... } DEPARTMENT EMP ID DNAME ID DEPT_ID PK PK FK Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 12 2006
  13. Slide 13: Relationship: One to Many @Entity @Entity @Table(name=\"EMP\") public class Department { public class Employee { @Id private int id; @Id private int id; private String dname; @ManyToOne @OneToMany(mappedBy=\"d\") private Collection<Employee> emps; @JoinColumn(name=\"DEPT_ID\") private Department d; // getters & setters ... // getters & setters } ... } DEPARTMENT EMP ID DNAME ID DEPT_ID PK PK FK Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 13 2006
  14. Slide 14: Relationships: One to One @Entity @Entity @Table(name=\"EMP\") public class ParkingSpace { public class Employee { @Id private int id; @Id private int id; private int lot; private String location; @JoinColumn(name=\"P_SPACE\") @OneToOne @OneToOne(mappedBy=\"space\") private ParkingSpace space; private Employee emp; // getters & setters // getters & setters ... ... } } PARKINGSPACE EMP ID LOT LOCATION ID P_SPACE PK PK FK Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 14 2006
  15. Slide 15: Relationships: Many to Many @Entity @Entity @Table(name=\"EMP\") public class Project { public class Employee { @Id private int id; @Id private int id; private String name; @ManyToMany(mappedBy=\"p\") @JoinTable(name=\"EMP_PROJ\", private Collection<Employee> e; joinColumns= // getters & setters @JoinColumn(name=\"EMP_ID\"), ... inverseJoinColumns= } @ManyToMany @JoinColumn(name=\"PROJ_ID\")) private Collection<Project> p; } EMP_PROJ PROJECT EMP EMP_ID PROJ_ID ID NAME ID NAME SALARY PK PK PK,FK1 PK,FK2 Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 15 2006
  16. Slide 16: Agenda  Présentation  Les mappings de base  Relations  Héritage  EntityManager  Queries  Transactions  Demo  Support et outils  Références  Questions Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 16 2006
  17. Slide 17: Héritage L’héritage est supporté dans la JPA. Pour y arriver, 3 stratégie de mappings sont proposées: Employee strategie 1 (single table + discriminator)  -id -name strategie 2 (joined tables)  -startDate strategie 3 (table per class)  ContractEmployee NurunEmployee -dailyRate -vacation -term Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 17 2006
  18. Slide 18: Héritage: single table Cette stratégie applatit la hiérachie de classes dans une seule table contenant tous les attributs de la hiérarchie. Les spécialisations sont différiencées par un discriminateur. Employee -id -name EMP -startDate PK ID NAME START_DATE DAILY_RATE TERM VACATION ContractEmployee NurunEmployee EMP_TYPE -dailyRate -vacation -term Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 18 2006
  19. Slide 19: Héritage: joined table Cette stratégie imite la hiérachie de classes dans plusieurs table reliées. Ici aussi un discriminateur est nécessaire. Employee ContractEmployee -id PK,FK ID -name DAILY_RATE -startDate TERM EMP PK ID NAME START_DATE EMP_TYPE NurunEmployee PK,FK ID VACATION ContractEmployee NurunEmployee -dailyRate -vacation -term Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 19 2006
  20. Slide 20: Héritage: table per concrete class Ici, tous les attributs d’une classe + ses attributs hérités, sont mis ensemble dans une seule table. Une par classe feuille (concrete class). Les superclasses ne sont pas représentées dans cette stratégie. Employee -id -name -startDate ContractEmployee PK,FK ID NAME S_DATE NurunEmployee DAILY_RATE TERM PK,FK ID NAME S_DATE VACATION ContractEmployee NurunEmployee -dailyRate -vacation -term Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 20 2006
  21. Slide 21: Agenda  Présentation  Les mappings de base  Relations  Héritage  EntityManager  Queries  Transactions  Demo  Support et outils  Références  Questions Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 21 2006
  22. Slide 22: Entity Manager: le cœur de la JPA Les entités, une fois annotées, ne peuvent se persister de par elles- mêmes. Elles ont besoins d’un engin, qui lui, performera les opérations sur la base de données, en concordance avec les mappings définis dans les annotations.  Étape 1: mettre la main sur une instance EntityManager  Étape 2: persister nos POJO  Étape 3: … euh, il n’y a pas d’étape 3! Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 22 2006
  23. Slide 23: Entity Manager: petit exemple Regardons un petit exemple qui implique un EntityManager. Faisons-le à l’aide d’un Stateless Session Bean (EJB 3.0) tout simple. public class EmployeeServlet extends HttpServlet { @PersistenceUnit(unitName=\"emp\") EntityManagerFactory emf; public Employee find(int id) { void createEmployee() EntityManager em em = EntityManager = emf.createEntityManager(); emf.createEntityManager(); return em.find(Employee.class, id); Employee emp = new Employee(); } // apply setters } // ... em.persist(emp); } } Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 23 2006
  24. Slide 24: EntityManager: déclarer le persistence unit Le fichier persistence.xml, est l’endroit où l’on déclare notre persistence unit. C’est aussi là où l’on configure notre persistence manager. <?xml version=\"1.0\"?> <persistence> <persistence-unit name=\"emp\"> <jta-data-source>jdbc/EmployeeDS</jta-data-source> <!–- autres propriétés du persistence provider --> </persistence-unit> </persistence> persistence.xml Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 24 2006
  25. Slide 25: Agenda  Présentation  Les mappings de base  Relations  Héritage  EntityManager  Queries  Transactions  Demo  Support et outils  Références  Questions Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 25 2006
  26. Slide 26: Queries La JPA introduit le JPA-QL, qui est, tout comme le EJBQL ou encore le HQL, un langage de requête du modèle objet, basé sur SQL. Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 26 2006
  27. Slide 27: Queries: NamedQueries On peut sauvegarder des gabarits de requête dans nos entités. C’est ce qu’on appelle une NamedQuery. Ceci permet :  La réutilisation de la requête  D’externaliser les requête du code. @Entity @NamedQuery(name=\"myQuery\", query=\"Select o from MyPojo o\") public class MyPojo { … } public class MyService { public void myMethod() { … List results = em.createNamedQuery(\"myQuery\").getResultList(); … } } Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 27 2006
  28. Slide 28: Queries: NativeQueries Une façon de faire des requête en SQL natif. Sert principalement à avoir plus de contrôle sur les requêtes à la base de donnée. public class MyService { public void myMethod() { … List results = em.createNativeQuery(“SELECT * FROM MyPojo“, MyPojo.class) .getResultList(); … } } Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 28 2006
  29. Slide 29: Agenda  Présentation  Les mappings de base  Relations  Héritage  EntityManager  Queries  Transactions  Demo  Support et outils  Références  Questions Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 29 2006
  30. Slide 30: Transactions 2 façons de mettre en place les transactions:  JTA  En utilisant la Java Transaction API, typiquement in-container  Resource-local  En utilisant le modèle de transaction du persistence manager Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 30 2006
  31. Slide 31: Transactions: JTA Pour utiliser la JTA, il est requis de mettre la main sur la transaction en cours. public class MyServlet extends HttpServlet { … @Resource UserTransaction utx; public void doGet(…) { utx.begin() // persistence operations … utx.commit(); } } Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 31 2006
  32. Slide 32: Transactions: Resource-local Contrôllée manuellement. Tient compte uniquement de la transaction actuelle, indépendamment du serveur d’application. public class MyServlet extends HttpServlet { … public void doGet(…) { EntityManager em = emf.createEntityManager(); em.getTransaction().begin(); // persistence operations … em.getTransaction().commit(); em.close(); } } Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 32 2006
  33. Slide 33: Agenda  Présentation  Les mappings de base  Relations  Héritage  EntityManager  Queries  Transactions  Demo  Support et outils  Références  Questions Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 33 2006
  34. Slide 34: Petite demo sympathique Amusons-nous tous ensemble avec:  NetBeans 5.5  Glassfish (JEE 5.0)  MySQL (5.0) Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 34 2006
  35. Slide 35: Support de l’industrie La JPA a fait concensus à JavaOne2006, tous les grands acteurs y trouvent leur compte, et jusqu’à preuve du contraire, vont supporter et endosser cette technologie. Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 35 2006
  36. Slide 36: Application server / persistence engine Les serveurs d’application ont tous placé leurs pions en vue de l’avènement de la JPA. Chacun a intégré un persistence manager de leur choix: -> Hibernate EntityManager JBoss AS  -> SolarMetric Kodo (OpenJPA!) BEA Weblogic 9.2  -> Oracle TopLink Essentials Sun GlassFish  -> Oracle TopLink Essentials Oracle 10g AS  -> ??? IBM WS 7.0 (p-ê?)  Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 36 2006
  37. Slide 37: Outils Open source  Eclipse 3.2.x w/ DALI  NetBeans 5.5 Commerciaux  Oracle Jdeveloper  BEA Workshop Studio (Eclipse++)  JBoss IDE (Eclipse++) gratuit Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 37 2006
  38. Slide 38: References Web JSR 220 http://www.jcp.org/en/jsr/detail?id=220 Projet DALI http://www.eclipse.org/dali/ Glassfish https://glassfish.dev.java.net/ Hibernate EntityManager http://hibernate.org/299.html SolarMetric Kodo http://solarmetric.com/Software/Kodo/kodoejb.php Oracle Toplink http://www.oracle.com/technology/products/ias/toplink/JPA/index.html BEA dev2dev http://dev2dev.bea.com/persistence/ Blogs Mike Keith http://www.jroller.com/page/mkeith Gavin King http://blog.hibernate.org/ The Aquarium http://blogs.sun.com/theaquarium Bouquin Pro EJB 3: Java Persistence API http://apress.com/book/bookDisplay.html?bID=10093 Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 38 2006
  39. Slide 39: Questions? jean-sebastien.bournival@nurun.com Ext. 2112 Communication interactive et nouvelles technologies / Interactive Communications through New Technologies Page 39 2006