java persistence api
play

Java Persistence API Martin Kraj Systinet / HP CZJUG - PowerPoint PPT Presentation

Java Persistence API Martin Kraj Systinet / HP CZJUG http://java.cz/jug Content JPA introduction Entities Relationships, Inheritance, JPQL Callbacks, Listeners, Transactions EntityManager, PeristenceContext Hibernate


  1. Java Persistence API Martin Krajčí Systinet / HP CZJUG http://java.cz/jug

  2. Content ● JPA introduction ● Entities ● Relationships, Inheritance, JPQL ● Callbacks, Listeners, Transactions ● EntityManager, PeristenceContext ● Hibernate vs. Toplink, IDE support ● Demo application CZJUG http://java.cz/jug

  3. Java persistence comparision ● September 2006 results CZJUG http://java.cz/jug

  4. Primary features ● Simple to use and intuitive to learn – Configure by exception (smart defaults) ● POJO development model ● Object-oriented, inheritance, polymorphism, etc. ● Standardized metadata for O/R mapping (annotations, XML) ● Entity detachment to other tier or JVMs ● Java persistence query language ● Java SE and EE persitence model ● Support pluggable persistence providers CZJUG http://java.cz/jug

  5. JPA vendors ● Toplink Essential (Oracle; CDDL) ● Hibernate (JBoss; LGPL) ● OpenJPA (Solarmetric/BEA; Apache 2.0) ● Castor (Codehaus; Apache 2.0) ● JPOX (JPOX; Apache 2.0) ● Toplink (Oracle; commercial) ● Kodo (BEA; commercial) ● CocoBase (Thoughtinc; commercial) ● SAP JPA (SAP; commercial) CZJUG http://java.cz/jug

  6. Content ● JPA introduction ● Entities ● Relationships, Inheritance, JPQL ● Callbacks, Listeners, Transactions ● EntityManager, PeristenceContext ● Hibernate vs. Toplink, IDE support ● Demo application CZJUG http://java.cz/jug

  7. Entities ● Serializable POJO annotated with @Entity ● Persistent state – Defined by persistent fields or properties (Hibernate extension) ● @AccessType.FIELD, @AccessType.PROPERTY – Entities may also have transient state ● @Transient, transient – Optimistic locking - @Version – Can be a concrete or abstract class CZJUG http://java.cz/jug

  8. Entity identification ● Persistent identity must be defined – @Id, @EmbeddedId, @IdClass ● Primary key generation - @GenerationType – TABLE, SEQUENCE, IDENTITY, AUTO CZJUG http://java.cz/jug

  9. Cascade & Fetch type ● CascadeType – ALL, PERSIST, MERGE, REMOVE, REFRESH ● FetchType – LAZY, EAGER CZJUG http://java.cz/jug

  10. Entity lifecycle CZJUG http://java.cz/jug

  11. Update and Detach ● Updates are flushed – Before query is executed – Transaction commit – Explicit flush using EM.flush() ● Detach – Persistent context ends – EM.clear() is called – deserialized CZJUG http://java.cz/jug

  12. Content ● JPA introduction ● Entities ● Relationships, Inheritance, JPQL ● Callbacks, Listeners, Transactions ● EntityManager, PeristenceContext ● Hibernate vs. Toplink, IDE support ● Demo application CZJUG http://java.cz/jug

  13. Relationships ● Supports composition and aggregation relationship – @Embedable, @ManyToOne, ... ● Relationships (uni/bi directional) – One-to-one, one-to-many, many-to-one, many-to- many ● Bidirectional relationships have owning and inverse side ● @JoinColumn for FK definition CZJUG http://java.cz/jug

  14. Inheritance ● Mixed inheritance hierarchies, entities and non-entities, either concrete or abstract ● @MappedSuperclass – Doesn't map to any table, can not query ● @Inheritance – SINGLE_TABLE, JOINED, TABLE_PER_CLASS CZJUG http://java.cz/jug

  15. Inheritance CZJUG http://java.cz/jug

  16. JPQL ● JPA supports static (named), dynamic and native queries – @NamedQuery, precompiled, createNamedQuery() – createQuery() – @SQLResultSetMapping, createNativeQuery() ● Projection into non-existing classes ● Aggregate functions, Subquery, Inner and outer joins ● Paging, Max result returned, Bind parameter, Flush mode CZJUG http://java.cz/jug

  17. Content ● JPA introduction ● Entities ● Relationships, Inheritance, JPQL ● Callbacks, Listeners, Transactions ● EntityManager, PeristenceContext ● Hibernate vs. Toplink, IDE support ● Demo application CZJUG http://java.cz/jug

  18. Callback & Listeners ● Attached to entity by @EntityListener – @PrePersist - when application calls persist() – @PostPersist – after the SQL insert – @PreRemove – when application calls remove() – @PostRemove – after the SQL delete – @PreUpdate – when a container detects that the instance is dirty – @PostUpdate – after the SQL update – @PostLoad – after the instance was loaded ● Listener methods are defined on non- entity classes CZJUG http://java.cz/jug

  19. Transactions ● In SE transactions and bootstraping must be handled by the application code – EntityTransaction ● begin(), commit(), setRollbackOnly(), rollback(), isActive() ● EE transactions are always JTA ● @javax.ejb.TransactionAttribute – REQUIRED, REQUIRES_NEW, SUPPORTS NOT_SUPPORTED, NEVER, MANDATORY CZJUG http://java.cz/jug

  20. Content ● JPA introduction ● Entities ● Relationships, Inheritance, JPQL ● Callbacks, Listeners, Transactions ● EntityManager, PeristenceContext ● Hibernate vs. Toplink, IDE support ● Demo application CZJUG http://java.cz/jug

  21. Packaging ● persistence.xml ● Defines – Name of persistence unit – Transaction strategy for EM – Etities – Persistence provider – O/R mapping file (overrides annotations) ● Persistent Unit – Set of entities that are mapped to the single DB and their mapping metadata CZJUG http://java.cz/jug

  22. Entity Manager & Persistence context ● Two types of EntityManagers – Container managed in EE ● @PersistenceContext, @PersistenceUnit – Application managed in SE/EE ● EntityManager, EntityManagerFactory ● Two types of Persistence context – Transaction-scoped ● PersistenceContextType.TRANSACTION – Extended (new to java ORM) ● PersistenceContextType.EXTENDED CZJUG http://java.cz/jug

  23. Content ● JPA introduction ● Entities ● Relationships, Inheritance, JPQL ● Callbacks, Listeners, Transactions ● EntityManager, PeristenceContext ● Hibernate vs. Toplink, IDE support ● Demo application CZJUG http://java.cz/jug

  24. Hibernate vs. Toplink Essential ● 13 files, 4.2 MB ● 2 files, 2.5 MB ● Cleaner DDL ● Better documentation generation ● Checks integrity ● Finer logging support ● Showsql more verbose CZJUG http://java.cz/jug

  25. JPA IDE support ● Eclipse Dali plugin ● Netbeans 5.5 CZJUG http://java.cz/jug

  26. Content ● JPA introduction ● Entities ● Relationships, Inheritance, JPQL ● Callbacks, Listeners, Transactions ● EntityManager, PeristenceContext ● Hibernate vs. Toplink, IDE support ● Demo application CZJUG http://java.cz/jug

  27. Demo application - UML CZJUG http://java.cz/jug

  28. Demo application - Layers CZJUG http://java.cz/jug

  29. JPA usage ● JPA + Spring using JpaDaoSupport ● JPA + Spring in SE ● JPA in SE ● JPA in EE ● Run on Toplink Essential, Hibernate, JBoss CZJUG http://java.cz/jug

  30. References Nice Documentations ● http://www.oracle.com/technology/products/ias/toplink/jpa/resources-index.h ● http://incubator.apache.org/openjpa/docs/openjpa-0.9.0-incubating/manual/ JPA Extensions ● http://www.oracle.com/technology/products/ias/toplink/jpa/resources/toplink ● http://www.hibernate.org/hib_docs/annotations/reference/en/html_single/#e JPA IDE comparision ● http://blogs.sun.com/klingo/entry/jpa_netbeans_5_5_vs Java persistence comparision ● http://www.java.net/pub/pq/122 ● http://www.jpox.org/ ● http://jpa.hibernate.org/ CZJUG http://java.cz/jug

  31. Questions & Answers ● Now OR ● martin.krajci@gmail.com Thanx for attention CZJUG http://java.cz/jug

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend