SlideShare une entreprise Scribd logo
1  sur  35
Télécharger pour lire hors ligne
© 2015 IBM Corporation
AAI-2235
OpenJPA and EclipseLink
Usage Scenarios Explained
Kevin Sutter, STSM
WebSphere Java EE and JPA
Architect
Agenda
• OpenJPA and EclipseLink
• JPA version comparisons
• OpenJPA to EclipseLink Migration
• High level concepts
• OpenJPA to EclipseLink Investigation
• Specific differences
• Summary
• Q & A
2
OpenJPA and
EclipseLink
OpenJPA and EclipseLink
• Apache OpenJPA
• Basis for WebSphere’s JPA solution for JPA 1.0 and JPA
2.0
• EclipseLink
• JPA Reference Implementation – “gospel”
• Basis for WebSphere Liberty’s JPA solution for JPA 2.1
(Beta)
• Moving forward…
• OpenJPA will continue to be supported in WAS for many,
many years
• At least until JPA 2.0 is deprecated…
• Both WebSphere Full Profile and Liberty Profile
4
Multiple JPA Providers
• Do I need to switch providers?
• Absolutely not!
• If you are happy with the current OpenJPA offering,
there is no need to move to EclipseLink
• If you want to use the JPA 2.1 API or features, you *may*
need to change…
• Many of the JPA 2.1 features have corresponding
OpenJPA proprietary solutions
• Apache OpenJPA (ie. JPA 2.0) will “play nice” with other Java
EE 7 features
• Allows for an easier, more gradual JPA migration
5
Key JPA 2.1 Features available in OpenJPA
• Schema Generation (JPA 2.1 Spec, Section 9.4)
• Generates DDL or interacts directly with database to
define table schemas based on JPA Entity definitions
• Similar functionality provided by OpenJPA’s schema
mapper
• Entity Graphs (JPA 2.1 Spec, Section 3.7)
• Allows for specified fetching or processing of a graph of
Entity objects
• Similar functionality provided by OpenJPA’s FetchPlan
and FetchGroup
• Stored Procedure Queries (JPA 2.1 Spec, Section 3.10.17)
• Ability to invoke database stored procedures
• Similar functionality provided by OpenJPA’s Query
invocation
6
Additional JPA 2.1 Features available in OpenJPA
• Basic Attribute Type Conversion (JPA 2.1 Spec, Section 3.8)
• Similar functionality support provided by OpenJPA’s
Externalizer feature
• @Index and @ForeignKey annotations (JPA 2.1 Spec, Sections 11.1.19 and
11.1.23)
• Similar functionality provided by OpenJPA’s annotations
• Unwrap utility methods for EntityManager, Cache, etc (JPA 2.1 Spec
Sections 3.1.1 and 7.10)
• Similar functionality provided by OpenJPA’s
implementation -- EntityManagerImpl.unwrap() and
OpenJPAPersistence.cast()
• Object construction when mapping results from native SQL (JPA
2.1 Spec, Section 3.10.16.2.2)
• Similar functionality provided by OpenJPA’s internal
ResultShape object
7
Additional JPA 2.1 Features NOT available in OpenJPA
• Criteria API Updates (JPA 2.1 Spec, Sections 6.5.15 and 6.5.7)
• Bulk update/delete
• Support for TREAT, ON, and FUNCTION operators
• Unsynchronized Persistence Contexts (JPA 2.1 Spec, Section 7.6.1)
• Provides more control over when Persistence Contexts
are synchronized with a transaction. Useful for mobile
applications.
• EntityListeners and CDI (JPA 2.1 Spec, Section 3.5.1)
• EntityListeners can now use CDI for injection of objects
• JPQL Updates for JPA 2.1 (JPA 2.1 Spec, Chapter 4)
• Several extensions to JPQL in support of the other
features
• OpenJPA’s JPQL will stay at the JPA 2.0 level
8
Feature Comparison Chart
9
Key JPA 2.1 Features Available in current OpenJPA solution?
Schema Generation Yes, SynchronizeMappings
Entity Graphs Yes, FetchPlans and FetchGroups
Stored Procedures Yes, Query interface
Basic Attribute Type Conversion Yes, Externalizer (and Factory)
@Index and @ForeignKey annotations Yes, proprietary @Index and @ForeignKey
annotations
Unwrap utility functions Yes, EntityManagerImpl.unwrap() and
OpenJPAPersistence.cast()
Object construction when mapping results with
native SQL
Yes, ResultShape (internal OpenJPA
implementation)
Criteria API updates No
Unsynchronized PersistenceContexts No
EntityListeners and CDI No
JPQL Updates in support of JPA 2.1 No
Bottom Line
• YOU DO NOT NEED TO MIGRATE
• Our Advice
• Continue using OpenJPA for your existing applications
• Use EclipseLink for your new applications
• But… If you want to use EclipseLink with existing applications,
the following slides will discuss what to look out for when
migrating existing applications
10
OpenJPA to
EclipseLink
Migration
Cache
• DataCache
• OpenJPA's L2 cache is disabled out of the box.
EclipseLink's L2 cache is enabled by default.
• If you are migrating an application that isn't using the
OpenJPA cache, it is highly recommended to disable the
EclipseLink cache using:
<shared-cache-mode>NONE</shared-cache-mode>
• Query (Results) Cache
• If QueryCache is enabled for OpenJPA, it will cache all
Named Queries and JPQL Statement Results
• EclipseLink only caches Named Queries Results
• More information on EclipseLink QueryCache here
12
Weaving/enhancement/transformation
• OpenJPA: Entities must be enhanced
• EclipseLink: Entities do not have to be enhanced
• Documented missing features (lazy loading, performance
gains, etc)
• WebSphere container hooks automatically weave/enhance
Entities for both OpenJPA and EclipseLink
• Applications packaged with entities pre-enhanced by OpenJPA
must be recompiled/repackaged
• Removes OpenJPA specific enhancement bytecode
13
OpenJPA to
EclipseLink
Investigation
Investigation
• Goal
• Find differences in behavior between OpenJPA and
EclipseLink
• OpenJPA → EclipseLink migration issues
• Data
• Entities from OpenJPA's testing framework (>700 entities)
• Process
• Auto generate databases tables using both providers
• Use tables created by OpenJPA for verification
• Database: DB2
• Results
• Errors (fix EclipseLink)
• Table differences
15
Private Accessor Methods
• JPA 2.1 Spec: property accessor methods must be public or
protected
• OpenJPA: ignores “private” fields
• EclipseLink: persists “private” fields
• Migrating issue: missing database column error
• Solution: Add @Transient to the method
– Forces EclipseLink to ignore the field
16
Add @Transient
Getter/Setter accessor methods
• Annotated getter method with no corresponding setter
• OpenJPA: silently ignores the field
• EclipseLink: throws an error during entity validation
• Solution: remove annotation
17
Missing setVersion method
No-arg Constructor
• JPA 2.1 Spec: an entity must have a no-arg constructor
• OpenJPA: if missing, generates a no-arg constructor.
• EclipseLink: throws an error only if the no-arg constructor
is missing, but other constructors exist.
• Solution: Add an empty no-arg constructor
18
Add no-arg
constructor
Unannotated Collections
• Unannotated fields of type java.util.Collection or any of it’s
subinterfaces (List<E>, Queue<E>, Set<E>, etc)
• OpenJPA: ignores fields
• EclipseLink: persists fields
• Solution: Add @javax.persistence.Transient
19
Add @Transient
@javax.persistence.ElementCollection
• @ElementCollection generates a Separate table
• Two columns: id, value
• Different value column name
• OpenJPA: 'element'
– CREATE TABLE EntityA_LISTOFSTRINGS (ENTITYA_ID
INTEGER, element VARCHAR(254))
• EclipseLink: field name
– CREATE TABLE EntityA_LISTOFSTRINGS (EntityA_ID
INTEGER, LISTOFSTRINGS VARCHAR(255))
• Solution
20
Add @Column
Behavior Mismatch: @GeneratedValue
• Generate values for primary keys
• Strategies: TABLE, SEQUENCE, IDENTITY, AUTO
• No Strategy or 'AUTO': JPA provider picks the strategy
– Good news: OpenJPA and EclipseLink default to
'TABLE' strategy
– Bad news: different table schemas are created
• Solution
• Change entity to explicitly use 'TABLE' strategy
• Map to existing OpenJPA table
21
Java Persistence Query Language (JPQL)
• @NamedQuery: specify named query in JPQL
• OpenJPA: ignores invalid unused JPQL statements
• EclipseLink: validates all JPQL statement by default
• Solutions
• Solution 1: fix JPQL statements
• Solution 2: set eclipselink's invalid JPQL tolerance
property to true
22
Unique Names
• Tables, NamedQuery, SQLResultSetMapping must have unique
names
• OpenJPA behavior is undefined
– Example: tables with same name are combined
• EclipseLink throws an error during entity validation
• Solution: review entities (manual process)
23
Summary
Summary
• Do I want to utilize my existing database tables?
• Modifications to the entities may be necessary
• Database tables previously created (by OpenJPA) may
not match EclipseLink’s generated tables
• OpenJPA may have been more lenient with spec
violations than Eclipselink is
• Recommendation
• Continue using OpenJPA for existing applications
• Migrate to EclipseLink only for new applications
25
Resources
Tools: Integrity Checker
• EclipseLink provides a way to verify descriptor's metadata against
database metadata
• Setup the integrity checker using a session customizer (link)
• Catches missing tables or columns without having to persist
• Example: private getter methods
• setShouldCatchExceptions(true) - find all entities with missing
columns
• Cons: doesn't catch everything or maybe anything…
• Failed to catch @ElementColumn resulting in a different column
name in the separate table, @GeneratedValue looking for a
different table
• Doesn't compare column types
• Better than nothing, but it missed many common issues
27
Tools: Migration toolkit
• Migration toolkit
• Detect scenarios that result in different behavior between
providers
• Alert users when migrating from OpenJPA to EclipseLink
28
Useful Links
• EclipseLink JPA provider for Liberty profile article
https://developer.ibm.com/wasdev/blog/2014/05/28/eclipseli
nk-jpa-provider-liberty-profile/
• EclipseLink Migration Wiki Page
https://wiki.eclipse.org/EclipseLink/Examples/JPA/Migration/
OpenJPA
29
Sampling of Related Sessions…
• AAI-1713A: Introduction to Java EE 7
• Monday, 2-3pm, Mandalay Bay, Reef Ballroom E
• AAI-1641A: Introduction to Web Sockets
• Monday, 5-6pm, Mandalay Bay, Reef Ballroom E
• AAI-1313A: Agile Development Using Java EE 7 with WebSphere Liberty Profile (LAB)
• Tuesday, 8-10am, Mandalay Bay, South Seas Ballroom D
• AAI-2236A: Using the New Java Concurrency Utilities with IBM WebSphere
• Tuesday, 2-3pm, Mandalay Bay, Reef Ballroom D
• AAI-2235A: OpenJPA and EclipseLink Usage Scenarios Explained
• Wednesday, 5:30-6:30pm, Mandalay Bay, Surf Ballroom A
• AAI-1610A: Configuring IBM WebSphere Application Server for Enterprise Messaging
Needs
• Wednesday, 5:30-6:30pm, Mandalay Bay, Surf Ballroom E
• AAI-3085A: Don’t Wait! Develop Responsive Applications with Java EE7 Instead
• Thursday, 10:30-11:30am, Mandalay Bay, Lagoon L
30
Notices and Disclaimers
Copyright © 2015 by International Business Machines Corporation (IBM). No part of this document may be reproduced or
transmitted in any form without written permission from IBM.
U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with
IBM.
Information in these presentations (including information relating to products that have not yet been announced by IBM) has been
reviewed for accuracy as of the date of initial publication and could include unintentional technical or typographical errors. IBM
shall have no responsibility to update this information. THIS DOCUMENT IS DISTRIBUTED "AS IS" WITHOUT ANY WARRANTY,
EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL IBM BE LIABLE FOR ANY DAMAGE ARISING FROM THE USE OF
THIS INFORMATION, INCLUDING BUT NOT LIMITED TO, LOSS OF DATA, BUSINESS INTERRUPTION, LOSS OF PROFIT
OR LOSS OF OPPORTUNITY. IBM products and services are warranted according to the terms and conditions of the
agreements under which they are provided.
Any statements regarding IBM's future direction, intent or product plans are subject to change or withdrawal without
notice.
Performance data contained herein was generally obtained in a controlled, isolated environments. Customer examples are
presented as illustrations of how those customers have used IBM products and the results they may have achieved. Actual
performance, cost, savings or other results in other operating environments may vary.
References in this document to IBM products, programs, or services does not imply that IBM intends to make such products,
programs or services available in all countries in which IBM operates or does business.
Workshops, sessions and associated materials may have been prepared by independent session speakers, and do not
necessarily reflect the views of IBM. All materials and discussions are provided for informational purposes only, and are neither
intended to, nor shall constitute legal or other guidance or advice to any individual participant or their specific situation.
It is the customer’s responsibility to insure its own compliance with legal requirements and to obtain advice of competent legal
counsel as to the identification and interpretation of any relevant laws and regulatory requirements that may affect the customer’s
business and any actions the customer may need to take to comply with such laws. IBM does not provide legal advice or
represent or warrant that its services or products will ensure that the customer is in compliance with any law.
Notices and Disclaimers (con’t)
Information concerning non-IBM products was obtained from the suppliers of those products, their published
announcements or other publicly available sources. IBM has not tested those products in connection with this
publication and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM
products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products.
IBM does not warrant the quality of any third-party products, or the ability of any such third-party products to
interoperate with IBM’s products. IBM EXPRESSLY DISCLAIMS ALL WARRANTIES, EXPRESSED OR IMPLIED,
INCLUDING BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE.
The provision of the information contained herein is not intended to, and does not, grant any right or license under any
IBM patents, copyrights, trademarks or other intellectual property right.
•IBM, the IBM logo, ibm.com, Bluemix, Blueworks Live, CICS, Clearcase, DOORS®, Enterprise Document
Management System™, Global Business Services ®, Global Technology Services ®, Information on Demand, ILOG,
Maximo®, MQIntegrator®, MQSeries®, Netcool®, OMEGAMON, OpenPower, PureAnalytics™, PureApplication®,
pureCluster™, PureCoverage®, PureData®, PureExperience®, PureFlex®, pureQuery®, pureScale®, PureSystems®,
QRadar®, Rational®, Rhapsody®, SoDA, SPSS, StoredIQ, Tivoli®, Trusteer®, urban{code}®, Watson, WebSphere®,
Worklight®, X-Force® and System z® Z/OS, are trademarks of International Business Machines Corporation,
registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other
companies. A current list of IBM trademarks is available on the Web at "Copyright and trademark information" at:
www.ibm.com/legal/copytrade.shtml.
Thank You
Your Feedback is
Important!
Access the InterConnect 2015
Conference CONNECT Attendee
Portal to complete your session
surveys from your smartphone,
laptop or conference kiosk.
Backup
Differences in Column Types
• Mapping fields to columns
• Example: java.lang.String fields
– OpenJPA: VARCHAR(254)
– EclipseLink: VARCHAR(255)
• Mostly non-problematic
• Exception: java.util.Locale fields
– OpenJPA: VARCHAR(254)
– EclipseLink: BLOB(64000)
– Solution
– Use a type converter (introduced in JPA 2.1)
– BLOB (object) ↔ VARCHAR (database)
35

Contenu connexe

Tendances

AAI 2236-Using the New Java Concurrency Utilities with IBM WebSphere
AAI 2236-Using the New Java Concurrency Utilities with IBM WebSphereAAI 2236-Using the New Java Concurrency Utilities with IBM WebSphere
AAI 2236-Using the New Java Concurrency Utilities with IBM WebSphereKevin Sutter
 
Java APIs- The missing manual (concurrency)
Java APIs- The missing manual (concurrency)Java APIs- The missing manual (concurrency)
Java APIs- The missing manual (concurrency)Hendrik Ebbers
 
PushToTest TestMaker 6.5 Open Source Test Design Document
PushToTest TestMaker 6.5 Open Source Test Design DocumentPushToTest TestMaker 6.5 Open Source Test Design Document
PushToTest TestMaker 6.5 Open Source Test Design DocumentClever Moe
 
OpenJDK-Zulu talk at JEEConf'14
OpenJDK-Zulu talk at JEEConf'14OpenJDK-Zulu talk at JEEConf'14
OpenJDK-Zulu talk at JEEConf'14Ivan Krylov
 
Java APIs - the missing manual
Java APIs - the missing manualJava APIs - the missing manual
Java APIs - the missing manualHendrik Ebbers
 
Third-Party Software Library Reuse : From Adoption to Migration
Third-Party Software Library Reuse : From Adoption to MigrationThird-Party Software Library Reuse : From Adoption to Migration
Third-Party Software Library Reuse : From Adoption to MigrationAli Ouni
 
September 2010 - Arquillian
September 2010 - ArquillianSeptember 2010 - Arquillian
September 2010 - ArquillianJBug Italy
 
Jakarta EE Recipes
Jakarta EE RecipesJakarta EE Recipes
Jakarta EE RecipesJosh Juneau
 
Migrating to java 9 modules
Migrating to java 9 modulesMigrating to java 9 modules
Migrating to java 9 modulesPaul Bakker
 
Cleaning your architecture with android architecture components
Cleaning your architecture with android architecture componentsCleaning your architecture with android architecture components
Cleaning your architecture with android architecture componentsDebora Gomez Bertoli
 
Projects Valhalla, Loom and GraalVM at JUG Mainz
Projects Valhalla, Loom and GraalVM at JUG MainzProjects Valhalla, Loom and GraalVM at JUG Mainz
Projects Valhalla, Loom and GraalVM at JUG MainzVadym Kazulkin
 
JavaOne 2017 - Collections.compare:JDK, Eclipse, Guava, Apache... [CON1754]
JavaOne 2017 - Collections.compare:JDK, Eclipse, Guava, Apache... [CON1754]JavaOne 2017 - Collections.compare:JDK, Eclipse, Guava, Apache... [CON1754]
JavaOne 2017 - Collections.compare:JDK, Eclipse, Guava, Apache... [CON1754]Leonardo De Moura Rocha Lima
 
Projects Valhalla, Loom and GraalVM at JCon 2020
Projects Valhalla, Loom and GraalVM at JCon 2020Projects Valhalla, Loom and GraalVM at JCon 2020
Projects Valhalla, Loom and GraalVM at JCon 2020Vadym Kazulkin
 

Tendances (20)

Migrating Beyond Java 8
Migrating Beyond Java 8Migrating Beyond Java 8
Migrating Beyond Java 8
 
AAI 2236-Using the New Java Concurrency Utilities with IBM WebSphere
AAI 2236-Using the New Java Concurrency Utilities with IBM WebSphereAAI 2236-Using the New Java Concurrency Utilities with IBM WebSphere
AAI 2236-Using the New Java Concurrency Utilities with IBM WebSphere
 
Java 11 OMG
Java 11 OMGJava 11 OMG
Java 11 OMG
 
Java APIs- The missing manual (concurrency)
Java APIs- The missing manual (concurrency)Java APIs- The missing manual (concurrency)
Java APIs- The missing manual (concurrency)
 
PushToTest TestMaker 6.5 Open Source Test Design Document
PushToTest TestMaker 6.5 Open Source Test Design DocumentPushToTest TestMaker 6.5 Open Source Test Design Document
PushToTest TestMaker 6.5 Open Source Test Design Document
 
Java 9 preview
Java 9 previewJava 9 preview
Java 9 preview
 
OpenJDK-Zulu talk at JEEConf'14
OpenJDK-Zulu talk at JEEConf'14OpenJDK-Zulu talk at JEEConf'14
OpenJDK-Zulu talk at JEEConf'14
 
Migrating to Java 9 Modules
Migrating to Java 9 ModulesMigrating to Java 9 Modules
Migrating to Java 9 Modules
 
Java APIs - the missing manual
Java APIs - the missing manualJava APIs - the missing manual
Java APIs - the missing manual
 
Third-Party Software Library Reuse : From Adoption to Migration
Third-Party Software Library Reuse : From Adoption to MigrationThird-Party Software Library Reuse : From Adoption to Migration
Third-Party Software Library Reuse : From Adoption to Migration
 
Java Desktop 2019
Java Desktop 2019Java Desktop 2019
Java Desktop 2019
 
September 2010 - Arquillian
September 2010 - ArquillianSeptember 2010 - Arquillian
September 2010 - Arquillian
 
Jakarta EE Recipes
Jakarta EE RecipesJakarta EE Recipes
Jakarta EE Recipes
 
Migrating to java 9 modules
Migrating to java 9 modulesMigrating to java 9 modules
Migrating to java 9 modules
 
Java Modularity: the Year After
Java Modularity: the Year AfterJava Modularity: the Year After
Java Modularity: the Year After
 
Cleaning your architecture with android architecture components
Cleaning your architecture with android architecture componentsCleaning your architecture with android architecture components
Cleaning your architecture with android architecture components
 
Projects Valhalla, Loom and GraalVM at JUG Mainz
Projects Valhalla, Loom and GraalVM at JUG MainzProjects Valhalla, Loom and GraalVM at JUG Mainz
Projects Valhalla, Loom and GraalVM at JUG Mainz
 
JavaOne 2017 - Collections.compare:JDK, Eclipse, Guava, Apache... [CON1754]
JavaOne 2017 - Collections.compare:JDK, Eclipse, Guava, Apache... [CON1754]JavaOne 2017 - Collections.compare:JDK, Eclipse, Guava, Apache... [CON1754]
JavaOne 2017 - Collections.compare:JDK, Eclipse, Guava, Apache... [CON1754]
 
Eclipse vs Visual Works
Eclipse vs Visual WorksEclipse vs Visual Works
Eclipse vs Visual Works
 
Projects Valhalla, Loom and GraalVM at JCon 2020
Projects Valhalla, Loom and GraalVM at JCon 2020Projects Valhalla, Loom and GraalVM at JCon 2020
Projects Valhalla, Loom and GraalVM at JCon 2020
 

En vedette

Wireframe -teachers
Wireframe -teachersWireframe -teachers
Wireframe -teachersJulie Wilson
 
AAI 1713-Introduction to Java EE 7
AAI 1713-Introduction to Java EE 7AAI 1713-Introduction to Java EE 7
AAI 1713-Introduction to Java EE 7Kevin Sutter
 
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache TomcatCase Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache TomcatVMware Hyperic
 
InterConnect 2016, OpenJPA and EclipseLink Usage Scenarios (PEJ-5303)
InterConnect 2016, OpenJPA and EclipseLink Usage Scenarios (PEJ-5303)InterConnect 2016, OpenJPA and EclipseLink Usage Scenarios (PEJ-5303)
InterConnect 2016, OpenJPA and EclipseLink Usage Scenarios (PEJ-5303)Kevin Sutter
 
InterConnect 2016 Java EE 7 Overview (PEJ-5296)
InterConnect 2016 Java EE 7 Overview (PEJ-5296)InterConnect 2016 Java EE 7 Overview (PEJ-5296)
InterConnect 2016 Java EE 7 Overview (PEJ-5296)Kevin Sutter
 
Debrief Web2.0 San Francisco 2009
Debrief Web2.0 San Francisco 2009Debrief Web2.0 San Francisco 2009
Debrief Web2.0 San Francisco 2009Henri Kaufman
 
Cristal Festival : qu'est-ce qui nous attend en 2012 ?
Cristal Festival : qu'est-ce qui nous attend en 2012 ?Cristal Festival : qu'est-ce qui nous attend en 2012 ?
Cristal Festival : qu'est-ce qui nous attend en 2012 ?Henri Kaufman
 
Cercle marketing Direct Lyon
Cercle marketing Direct LyonCercle marketing Direct Lyon
Cercle marketing Direct LyonHenri Kaufman
 
Despre dovleac
Despre dovleacDespre dovleac
Despre dovleacDia Daria
 
Reader's digest " Farmacia naturii"
 Reader's digest " Farmacia naturii" Reader's digest " Farmacia naturii"
Reader's digest " Farmacia naturii"Dia Daria
 
Alimentatie inteligenta emil radulescu
Alimentatie inteligenta   emil radulescuAlimentatie inteligenta   emil radulescu
Alimentatie inteligenta emil radulescuDia Daria
 
0sequence of tenses
0sequence of tenses0sequence of tenses
0sequence of tensesDia Daria
 
Retete culinare pentru bebelusi
Retete culinare pentru bebelusiRetete culinare pentru bebelusi
Retete culinare pentru bebelusiDia Daria
 
30 de torturi_gustoase
30 de torturi_gustoase30 de torturi_gustoase
30 de torturi_gustoaseDia Daria
 
Dieta young-miracolul-p h-pentru-o-sanatate-perfecta-transfer-ro-05apr-417e8e
Dieta young-miracolul-p h-pentru-o-sanatate-perfecta-transfer-ro-05apr-417e8eDieta young-miracolul-p h-pentru-o-sanatate-perfecta-transfer-ro-05apr-417e8e
Dieta young-miracolul-p h-pentru-o-sanatate-perfecta-transfer-ro-05apr-417e8eDia Daria
 
Tinerete fara-batranete
Tinerete fara-batraneteTinerete fara-batranete
Tinerete fara-batraneteDia Daria
 
Combinarea-alimentelor-si-digestia-steve-meyerowitz
 Combinarea-alimentelor-si-digestia-steve-meyerowitz Combinarea-alimentelor-si-digestia-steve-meyerowitz
Combinarea-alimentelor-si-digestia-steve-meyerowitzDia Daria
 
Caiet prajituri
Caiet prajituriCaiet prajituri
Caiet prajituriDia Daria
 
G.Mencinicopschi Biblia Alimentară
G.Mencinicopschi Biblia AlimentarăG.Mencinicopschi Biblia Alimentară
G.Mencinicopschi Biblia AlimentarăDia Daria
 

En vedette (19)

Wireframe -teachers
Wireframe -teachersWireframe -teachers
Wireframe -teachers
 
AAI 1713-Introduction to Java EE 7
AAI 1713-Introduction to Java EE 7AAI 1713-Introduction to Java EE 7
AAI 1713-Introduction to Java EE 7
 
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache TomcatCase Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
 
InterConnect 2016, OpenJPA and EclipseLink Usage Scenarios (PEJ-5303)
InterConnect 2016, OpenJPA and EclipseLink Usage Scenarios (PEJ-5303)InterConnect 2016, OpenJPA and EclipseLink Usage Scenarios (PEJ-5303)
InterConnect 2016, OpenJPA and EclipseLink Usage Scenarios (PEJ-5303)
 
InterConnect 2016 Java EE 7 Overview (PEJ-5296)
InterConnect 2016 Java EE 7 Overview (PEJ-5296)InterConnect 2016 Java EE 7 Overview (PEJ-5296)
InterConnect 2016 Java EE 7 Overview (PEJ-5296)
 
Debrief Web2.0 San Francisco 2009
Debrief Web2.0 San Francisco 2009Debrief Web2.0 San Francisco 2009
Debrief Web2.0 San Francisco 2009
 
Cristal Festival : qu'est-ce qui nous attend en 2012 ?
Cristal Festival : qu'est-ce qui nous attend en 2012 ?Cristal Festival : qu'est-ce qui nous attend en 2012 ?
Cristal Festival : qu'est-ce qui nous attend en 2012 ?
 
Cercle marketing Direct Lyon
Cercle marketing Direct LyonCercle marketing Direct Lyon
Cercle marketing Direct Lyon
 
Despre dovleac
Despre dovleacDespre dovleac
Despre dovleac
 
Reader's digest " Farmacia naturii"
 Reader's digest " Farmacia naturii" Reader's digest " Farmacia naturii"
Reader's digest " Farmacia naturii"
 
Alimentatie inteligenta emil radulescu
Alimentatie inteligenta   emil radulescuAlimentatie inteligenta   emil radulescu
Alimentatie inteligenta emil radulescu
 
0sequence of tenses
0sequence of tenses0sequence of tenses
0sequence of tenses
 
Retete culinare pentru bebelusi
Retete culinare pentru bebelusiRetete culinare pentru bebelusi
Retete culinare pentru bebelusi
 
30 de torturi_gustoase
30 de torturi_gustoase30 de torturi_gustoase
30 de torturi_gustoase
 
Dieta young-miracolul-p h-pentru-o-sanatate-perfecta-transfer-ro-05apr-417e8e
Dieta young-miracolul-p h-pentru-o-sanatate-perfecta-transfer-ro-05apr-417e8eDieta young-miracolul-p h-pentru-o-sanatate-perfecta-transfer-ro-05apr-417e8e
Dieta young-miracolul-p h-pentru-o-sanatate-perfecta-transfer-ro-05apr-417e8e
 
Tinerete fara-batranete
Tinerete fara-batraneteTinerete fara-batranete
Tinerete fara-batranete
 
Combinarea-alimentelor-si-digestia-steve-meyerowitz
 Combinarea-alimentelor-si-digestia-steve-meyerowitz Combinarea-alimentelor-si-digestia-steve-meyerowitz
Combinarea-alimentelor-si-digestia-steve-meyerowitz
 
Caiet prajituri
Caiet prajituriCaiet prajituri
Caiet prajituri
 
G.Mencinicopschi Biblia Alimentară
G.Mencinicopschi Biblia AlimentarăG.Mencinicopschi Biblia Alimentară
G.Mencinicopschi Biblia Alimentară
 

Similaire à AAI 2235-OpenJPA and EclipseLink Usage Scenarios Explained

Enterprise Persistence in OSGi - Mike Keith, Oracle
Enterprise Persistence in OSGi - Mike Keith, OracleEnterprise Persistence in OSGi - Mike Keith, Oracle
Enterprise Persistence in OSGi - Mike Keith, Oraclemfrancis
 
Tools Coverage for the Java EE Platform @ Silicon Valley Code Camp 2010
Tools Coverage for the Java EE Platform @ Silicon Valley Code Camp 2010Tools Coverage for the Java EE Platform @ Silicon Valley Code Camp 2010
Tools Coverage for the Java EE Platform @ Silicon Valley Code Camp 2010Arun Gupta
 
Angular 2 overview
Angular 2 overviewAngular 2 overview
Angular 2 overviewJesse Warden
 
Threading Made Easy! A Busy Developer’s Guide to Kotlin Coroutines
Threading Made Easy! A Busy Developer’s Guide to Kotlin CoroutinesThreading Made Easy! A Busy Developer’s Guide to Kotlin Coroutines
Threading Made Easy! A Busy Developer’s Guide to Kotlin CoroutinesLauren Yew
 
Microservices: The Best Practices
Microservices: The Best PracticesMicroservices: The Best Practices
Microservices: The Best PracticesPavel Mička
 
Advanced debugging
Advanced debuggingAdvanced debugging
Advanced debuggingAli Akhtar
 
01 introduction to struts2
01 introduction to struts201 introduction to struts2
01 introduction to struts2Smita B Kumar
 
Migrating to Jakarta EE 10
Migrating to Jakarta EE 10Migrating to Jakarta EE 10
Migrating to Jakarta EE 10Josh Juneau
 
Informatica power center 8.x course content
Informatica power center 8.x course contentInformatica power center 8.x course content
Informatica power center 8.x course contentSmartittrainings
 
The Scala IDE for Eclipse - Retrospect and Prospect for 2.8.0
The Scala IDE for Eclipse - Retrospect and Prospect for 2.8.0The Scala IDE for Eclipse - Retrospect and Prospect for 2.8.0
The Scala IDE for Eclipse - Retrospect and Prospect for 2.8.0Miles Sabin
 
Impala Architecture presentation
Impala Architecture presentationImpala Architecture presentation
Impala Architecture presentationhadooparchbook
 
Deep Dive in Java 9+
Deep Dive in Java 9+Deep Dive in Java 9+
Deep Dive in Java 9+Miro Cupak
 
Tips For Maintaining OSS Projects
Tips For Maintaining OSS ProjectsTips For Maintaining OSS Projects
Tips For Maintaining OSS ProjectsTaro L. Saito
 
Scaladays 2010 - The Scala IDE for Eclipse - Retrospect and Prospect for 2.8 ...
Scaladays 2010 - The Scala IDE for Eclipse - Retrospect and Prospect for 2.8 ...Scaladays 2010 - The Scala IDE for Eclipse - Retrospect and Prospect for 2.8 ...
Scaladays 2010 - The Scala IDE for Eclipse - Retrospect and Prospect for 2.8 ...Miles Sabin
 
Introduction to JavaScript for APEX Developers - Module 1: JavaScript Basics
Introduction to JavaScript for APEX Developers - Module 1: JavaScript BasicsIntroduction to JavaScript for APEX Developers - Module 1: JavaScript Basics
Introduction to JavaScript for APEX Developers - Module 1: JavaScript BasicsDaniel McGhan
 
What’s expected in Java 9
What’s expected in Java 9What’s expected in Java 9
What’s expected in Java 9Gal Marder
 

Similaire à AAI 2235-OpenJPA and EclipseLink Usage Scenarios Explained (20)

Enterprise Persistence in OSGi - Mike Keith, Oracle
Enterprise Persistence in OSGi - Mike Keith, OracleEnterprise Persistence in OSGi - Mike Keith, Oracle
Enterprise Persistence in OSGi - Mike Keith, Oracle
 
Java9to19Final.pptx
Java9to19Final.pptxJava9to19Final.pptx
Java9to19Final.pptx
 
Eclipse UI automation
Eclipse UI automationEclipse UI automation
Eclipse UI automation
 
Tools Coverage for the Java EE Platform @ Silicon Valley Code Camp 2010
Tools Coverage for the Java EE Platform @ Silicon Valley Code Camp 2010Tools Coverage for the Java EE Platform @ Silicon Valley Code Camp 2010
Tools Coverage for the Java EE Platform @ Silicon Valley Code Camp 2010
 
Angular 2 overview
Angular 2 overviewAngular 2 overview
Angular 2 overview
 
Functional java 8
Functional java 8Functional java 8
Functional java 8
 
Threading Made Easy! A Busy Developer’s Guide to Kotlin Coroutines
Threading Made Easy! A Busy Developer’s Guide to Kotlin CoroutinesThreading Made Easy! A Busy Developer’s Guide to Kotlin Coroutines
Threading Made Easy! A Busy Developer’s Guide to Kotlin Coroutines
 
Microservices: The Best Practices
Microservices: The Best PracticesMicroservices: The Best Practices
Microservices: The Best Practices
 
Advanced debugging
Advanced debuggingAdvanced debugging
Advanced debugging
 
01 introduction to struts2
01 introduction to struts201 introduction to struts2
01 introduction to struts2
 
Migrating to Jakarta EE 10
Migrating to Jakarta EE 10Migrating to Jakarta EE 10
Migrating to Jakarta EE 10
 
JavaEE 6 tools coverage
JavaEE 6 tools coverageJavaEE 6 tools coverage
JavaEE 6 tools coverage
 
Informatica power center 8.x course content
Informatica power center 8.x course contentInformatica power center 8.x course content
Informatica power center 8.x course content
 
The Scala IDE for Eclipse - Retrospect and Prospect for 2.8.0
The Scala IDE for Eclipse - Retrospect and Prospect for 2.8.0The Scala IDE for Eclipse - Retrospect and Prospect for 2.8.0
The Scala IDE for Eclipse - Retrospect and Prospect for 2.8.0
 
Impala Architecture presentation
Impala Architecture presentationImpala Architecture presentation
Impala Architecture presentation
 
Deep Dive in Java 9+
Deep Dive in Java 9+Deep Dive in Java 9+
Deep Dive in Java 9+
 
Tips For Maintaining OSS Projects
Tips For Maintaining OSS ProjectsTips For Maintaining OSS Projects
Tips For Maintaining OSS Projects
 
Scaladays 2010 - The Scala IDE for Eclipse - Retrospect and Prospect for 2.8 ...
Scaladays 2010 - The Scala IDE for Eclipse - Retrospect and Prospect for 2.8 ...Scaladays 2010 - The Scala IDE for Eclipse - Retrospect and Prospect for 2.8 ...
Scaladays 2010 - The Scala IDE for Eclipse - Retrospect and Prospect for 2.8 ...
 
Introduction to JavaScript for APEX Developers - Module 1: JavaScript Basics
Introduction to JavaScript for APEX Developers - Module 1: JavaScript BasicsIntroduction to JavaScript for APEX Developers - Module 1: JavaScript Basics
Introduction to JavaScript for APEX Developers - Module 1: JavaScript Basics
 
What’s expected in Java 9
What’s expected in Java 9What’s expected in Java 9
What’s expected in Java 9
 

Plus de Kevin Sutter

DevNexus 2019: MicroProfile and Jakarta EE - What's Next?
DevNexus 2019:  MicroProfile and Jakarta EE - What's Next?DevNexus 2019:  MicroProfile and Jakarta EE - What's Next?
DevNexus 2019: MicroProfile and Jakarta EE - What's Next?Kevin Sutter
 
Implementing Microservices with Jakarta EE and MicroProfile
Implementing Microservices with Jakarta EE and MicroProfileImplementing Microservices with Jakarta EE and MicroProfile
Implementing Microservices with Jakarta EE and MicroProfileKevin Sutter
 
Bmc 4286-micro profile-a programming model for microservices-based applications
Bmc 4286-micro profile-a programming model for microservices-based applicationsBmc 4286-micro profile-a programming model for microservices-based applications
Bmc 4286-micro profile-a programming model for microservices-based applicationsKevin Sutter
 
Ham 4393-micro profile, java ee, and the application server
Ham 4393-micro profile, java ee, and the application serverHam 4393-micro profile, java ee, and the application server
Ham 4393-micro profile, java ee, and the application serverKevin Sutter
 
Haj 4328-java ee 7 overview
Haj 4328-java ee 7 overviewHaj 4328-java ee 7 overview
Haj 4328-java ee 7 overviewKevin Sutter
 
Haj 4344-java se 9 and the application server-1
Haj 4344-java se 9 and the application server-1Haj 4344-java se 9 and the application server-1
Haj 4344-java se 9 and the application server-1Kevin Sutter
 
Bas 5676-java ee 8 introduction
Bas 5676-java ee 8 introductionBas 5676-java ee 8 introduction
Bas 5676-java ee 8 introductionKevin Sutter
 

Plus de Kevin Sutter (7)

DevNexus 2019: MicroProfile and Jakarta EE - What's Next?
DevNexus 2019:  MicroProfile and Jakarta EE - What's Next?DevNexus 2019:  MicroProfile and Jakarta EE - What's Next?
DevNexus 2019: MicroProfile and Jakarta EE - What's Next?
 
Implementing Microservices with Jakarta EE and MicroProfile
Implementing Microservices with Jakarta EE and MicroProfileImplementing Microservices with Jakarta EE and MicroProfile
Implementing Microservices with Jakarta EE and MicroProfile
 
Bmc 4286-micro profile-a programming model for microservices-based applications
Bmc 4286-micro profile-a programming model for microservices-based applicationsBmc 4286-micro profile-a programming model for microservices-based applications
Bmc 4286-micro profile-a programming model for microservices-based applications
 
Ham 4393-micro profile, java ee, and the application server
Ham 4393-micro profile, java ee, and the application serverHam 4393-micro profile, java ee, and the application server
Ham 4393-micro profile, java ee, and the application server
 
Haj 4328-java ee 7 overview
Haj 4328-java ee 7 overviewHaj 4328-java ee 7 overview
Haj 4328-java ee 7 overview
 
Haj 4344-java se 9 and the application server-1
Haj 4344-java se 9 and the application server-1Haj 4344-java se 9 and the application server-1
Haj 4344-java se 9 and the application server-1
 
Bas 5676-java ee 8 introduction
Bas 5676-java ee 8 introductionBas 5676-java ee 8 introduction
Bas 5676-java ee 8 introduction
 

Dernier

5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 

Dernier (20)

5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 

AAI 2235-OpenJPA and EclipseLink Usage Scenarios Explained

  • 1. © 2015 IBM Corporation AAI-2235 OpenJPA and EclipseLink Usage Scenarios Explained Kevin Sutter, STSM WebSphere Java EE and JPA Architect
  • 2. Agenda • OpenJPA and EclipseLink • JPA version comparisons • OpenJPA to EclipseLink Migration • High level concepts • OpenJPA to EclipseLink Investigation • Specific differences • Summary • Q & A 2
  • 4. OpenJPA and EclipseLink • Apache OpenJPA • Basis for WebSphere’s JPA solution for JPA 1.0 and JPA 2.0 • EclipseLink • JPA Reference Implementation – “gospel” • Basis for WebSphere Liberty’s JPA solution for JPA 2.1 (Beta) • Moving forward… • OpenJPA will continue to be supported in WAS for many, many years • At least until JPA 2.0 is deprecated… • Both WebSphere Full Profile and Liberty Profile 4
  • 5. Multiple JPA Providers • Do I need to switch providers? • Absolutely not! • If you are happy with the current OpenJPA offering, there is no need to move to EclipseLink • If you want to use the JPA 2.1 API or features, you *may* need to change… • Many of the JPA 2.1 features have corresponding OpenJPA proprietary solutions • Apache OpenJPA (ie. JPA 2.0) will “play nice” with other Java EE 7 features • Allows for an easier, more gradual JPA migration 5
  • 6. Key JPA 2.1 Features available in OpenJPA • Schema Generation (JPA 2.1 Spec, Section 9.4) • Generates DDL or interacts directly with database to define table schemas based on JPA Entity definitions • Similar functionality provided by OpenJPA’s schema mapper • Entity Graphs (JPA 2.1 Spec, Section 3.7) • Allows for specified fetching or processing of a graph of Entity objects • Similar functionality provided by OpenJPA’s FetchPlan and FetchGroup • Stored Procedure Queries (JPA 2.1 Spec, Section 3.10.17) • Ability to invoke database stored procedures • Similar functionality provided by OpenJPA’s Query invocation 6
  • 7. Additional JPA 2.1 Features available in OpenJPA • Basic Attribute Type Conversion (JPA 2.1 Spec, Section 3.8) • Similar functionality support provided by OpenJPA’s Externalizer feature • @Index and @ForeignKey annotations (JPA 2.1 Spec, Sections 11.1.19 and 11.1.23) • Similar functionality provided by OpenJPA’s annotations • Unwrap utility methods for EntityManager, Cache, etc (JPA 2.1 Spec Sections 3.1.1 and 7.10) • Similar functionality provided by OpenJPA’s implementation -- EntityManagerImpl.unwrap() and OpenJPAPersistence.cast() • Object construction when mapping results from native SQL (JPA 2.1 Spec, Section 3.10.16.2.2) • Similar functionality provided by OpenJPA’s internal ResultShape object 7
  • 8. Additional JPA 2.1 Features NOT available in OpenJPA • Criteria API Updates (JPA 2.1 Spec, Sections 6.5.15 and 6.5.7) • Bulk update/delete • Support for TREAT, ON, and FUNCTION operators • Unsynchronized Persistence Contexts (JPA 2.1 Spec, Section 7.6.1) • Provides more control over when Persistence Contexts are synchronized with a transaction. Useful for mobile applications. • EntityListeners and CDI (JPA 2.1 Spec, Section 3.5.1) • EntityListeners can now use CDI for injection of objects • JPQL Updates for JPA 2.1 (JPA 2.1 Spec, Chapter 4) • Several extensions to JPQL in support of the other features • OpenJPA’s JPQL will stay at the JPA 2.0 level 8
  • 9. Feature Comparison Chart 9 Key JPA 2.1 Features Available in current OpenJPA solution? Schema Generation Yes, SynchronizeMappings Entity Graphs Yes, FetchPlans and FetchGroups Stored Procedures Yes, Query interface Basic Attribute Type Conversion Yes, Externalizer (and Factory) @Index and @ForeignKey annotations Yes, proprietary @Index and @ForeignKey annotations Unwrap utility functions Yes, EntityManagerImpl.unwrap() and OpenJPAPersistence.cast() Object construction when mapping results with native SQL Yes, ResultShape (internal OpenJPA implementation) Criteria API updates No Unsynchronized PersistenceContexts No EntityListeners and CDI No JPQL Updates in support of JPA 2.1 No
  • 10. Bottom Line • YOU DO NOT NEED TO MIGRATE • Our Advice • Continue using OpenJPA for your existing applications • Use EclipseLink for your new applications • But… If you want to use EclipseLink with existing applications, the following slides will discuss what to look out for when migrating existing applications 10
  • 12. Cache • DataCache • OpenJPA's L2 cache is disabled out of the box. EclipseLink's L2 cache is enabled by default. • If you are migrating an application that isn't using the OpenJPA cache, it is highly recommended to disable the EclipseLink cache using: <shared-cache-mode>NONE</shared-cache-mode> • Query (Results) Cache • If QueryCache is enabled for OpenJPA, it will cache all Named Queries and JPQL Statement Results • EclipseLink only caches Named Queries Results • More information on EclipseLink QueryCache here 12
  • 13. Weaving/enhancement/transformation • OpenJPA: Entities must be enhanced • EclipseLink: Entities do not have to be enhanced • Documented missing features (lazy loading, performance gains, etc) • WebSphere container hooks automatically weave/enhance Entities for both OpenJPA and EclipseLink • Applications packaged with entities pre-enhanced by OpenJPA must be recompiled/repackaged • Removes OpenJPA specific enhancement bytecode 13
  • 15. Investigation • Goal • Find differences in behavior between OpenJPA and EclipseLink • OpenJPA → EclipseLink migration issues • Data • Entities from OpenJPA's testing framework (>700 entities) • Process • Auto generate databases tables using both providers • Use tables created by OpenJPA for verification • Database: DB2 • Results • Errors (fix EclipseLink) • Table differences 15
  • 16. Private Accessor Methods • JPA 2.1 Spec: property accessor methods must be public or protected • OpenJPA: ignores “private” fields • EclipseLink: persists “private” fields • Migrating issue: missing database column error • Solution: Add @Transient to the method – Forces EclipseLink to ignore the field 16 Add @Transient
  • 17. Getter/Setter accessor methods • Annotated getter method with no corresponding setter • OpenJPA: silently ignores the field • EclipseLink: throws an error during entity validation • Solution: remove annotation 17 Missing setVersion method
  • 18. No-arg Constructor • JPA 2.1 Spec: an entity must have a no-arg constructor • OpenJPA: if missing, generates a no-arg constructor. • EclipseLink: throws an error only if the no-arg constructor is missing, but other constructors exist. • Solution: Add an empty no-arg constructor 18 Add no-arg constructor
  • 19. Unannotated Collections • Unannotated fields of type java.util.Collection or any of it’s subinterfaces (List<E>, Queue<E>, Set<E>, etc) • OpenJPA: ignores fields • EclipseLink: persists fields • Solution: Add @javax.persistence.Transient 19 Add @Transient
  • 20. @javax.persistence.ElementCollection • @ElementCollection generates a Separate table • Two columns: id, value • Different value column name • OpenJPA: 'element' – CREATE TABLE EntityA_LISTOFSTRINGS (ENTITYA_ID INTEGER, element VARCHAR(254)) • EclipseLink: field name – CREATE TABLE EntityA_LISTOFSTRINGS (EntityA_ID INTEGER, LISTOFSTRINGS VARCHAR(255)) • Solution 20 Add @Column
  • 21. Behavior Mismatch: @GeneratedValue • Generate values for primary keys • Strategies: TABLE, SEQUENCE, IDENTITY, AUTO • No Strategy or 'AUTO': JPA provider picks the strategy – Good news: OpenJPA and EclipseLink default to 'TABLE' strategy – Bad news: different table schemas are created • Solution • Change entity to explicitly use 'TABLE' strategy • Map to existing OpenJPA table 21
  • 22. Java Persistence Query Language (JPQL) • @NamedQuery: specify named query in JPQL • OpenJPA: ignores invalid unused JPQL statements • EclipseLink: validates all JPQL statement by default • Solutions • Solution 1: fix JPQL statements • Solution 2: set eclipselink's invalid JPQL tolerance property to true 22
  • 23. Unique Names • Tables, NamedQuery, SQLResultSetMapping must have unique names • OpenJPA behavior is undefined – Example: tables with same name are combined • EclipseLink throws an error during entity validation • Solution: review entities (manual process) 23
  • 25. Summary • Do I want to utilize my existing database tables? • Modifications to the entities may be necessary • Database tables previously created (by OpenJPA) may not match EclipseLink’s generated tables • OpenJPA may have been more lenient with spec violations than Eclipselink is • Recommendation • Continue using OpenJPA for existing applications • Migrate to EclipseLink only for new applications 25
  • 27. Tools: Integrity Checker • EclipseLink provides a way to verify descriptor's metadata against database metadata • Setup the integrity checker using a session customizer (link) • Catches missing tables or columns without having to persist • Example: private getter methods • setShouldCatchExceptions(true) - find all entities with missing columns • Cons: doesn't catch everything or maybe anything… • Failed to catch @ElementColumn resulting in a different column name in the separate table, @GeneratedValue looking for a different table • Doesn't compare column types • Better than nothing, but it missed many common issues 27
  • 28. Tools: Migration toolkit • Migration toolkit • Detect scenarios that result in different behavior between providers • Alert users when migrating from OpenJPA to EclipseLink 28
  • 29. Useful Links • EclipseLink JPA provider for Liberty profile article https://developer.ibm.com/wasdev/blog/2014/05/28/eclipseli nk-jpa-provider-liberty-profile/ • EclipseLink Migration Wiki Page https://wiki.eclipse.org/EclipseLink/Examples/JPA/Migration/ OpenJPA 29
  • 30. Sampling of Related Sessions… • AAI-1713A: Introduction to Java EE 7 • Monday, 2-3pm, Mandalay Bay, Reef Ballroom E • AAI-1641A: Introduction to Web Sockets • Monday, 5-6pm, Mandalay Bay, Reef Ballroom E • AAI-1313A: Agile Development Using Java EE 7 with WebSphere Liberty Profile (LAB) • Tuesday, 8-10am, Mandalay Bay, South Seas Ballroom D • AAI-2236A: Using the New Java Concurrency Utilities with IBM WebSphere • Tuesday, 2-3pm, Mandalay Bay, Reef Ballroom D • AAI-2235A: OpenJPA and EclipseLink Usage Scenarios Explained • Wednesday, 5:30-6:30pm, Mandalay Bay, Surf Ballroom A • AAI-1610A: Configuring IBM WebSphere Application Server for Enterprise Messaging Needs • Wednesday, 5:30-6:30pm, Mandalay Bay, Surf Ballroom E • AAI-3085A: Don’t Wait! Develop Responsive Applications with Java EE7 Instead • Thursday, 10:30-11:30am, Mandalay Bay, Lagoon L 30
  • 31. Notices and Disclaimers Copyright © 2015 by International Business Machines Corporation (IBM). No part of this document may be reproduced or transmitted in any form without written permission from IBM. U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM. Information in these presentations (including information relating to products that have not yet been announced by IBM) has been reviewed for accuracy as of the date of initial publication and could include unintentional technical or typographical errors. IBM shall have no responsibility to update this information. THIS DOCUMENT IS DISTRIBUTED "AS IS" WITHOUT ANY WARRANTY, EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL IBM BE LIABLE FOR ANY DAMAGE ARISING FROM THE USE OF THIS INFORMATION, INCLUDING BUT NOT LIMITED TO, LOSS OF DATA, BUSINESS INTERRUPTION, LOSS OF PROFIT OR LOSS OF OPPORTUNITY. IBM products and services are warranted according to the terms and conditions of the agreements under which they are provided. Any statements regarding IBM's future direction, intent or product plans are subject to change or withdrawal without notice. Performance data contained herein was generally obtained in a controlled, isolated environments. Customer examples are presented as illustrations of how those customers have used IBM products and the results they may have achieved. Actual performance, cost, savings or other results in other operating environments may vary. References in this document to IBM products, programs, or services does not imply that IBM intends to make such products, programs or services available in all countries in which IBM operates or does business. Workshops, sessions and associated materials may have been prepared by independent session speakers, and do not necessarily reflect the views of IBM. All materials and discussions are provided for informational purposes only, and are neither intended to, nor shall constitute legal or other guidance or advice to any individual participant or their specific situation. It is the customer’s responsibility to insure its own compliance with legal requirements and to obtain advice of competent legal counsel as to the identification and interpretation of any relevant laws and regulatory requirements that may affect the customer’s business and any actions the customer may need to take to comply with such laws. IBM does not provide legal advice or represent or warrant that its services or products will ensure that the customer is in compliance with any law.
  • 32. Notices and Disclaimers (con’t) Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products in connection with this publication and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products. IBM does not warrant the quality of any third-party products, or the ability of any such third-party products to interoperate with IBM’s products. IBM EXPRESSLY DISCLAIMS ALL WARRANTIES, EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. The provision of the information contained herein is not intended to, and does not, grant any right or license under any IBM patents, copyrights, trademarks or other intellectual property right. •IBM, the IBM logo, ibm.com, Bluemix, Blueworks Live, CICS, Clearcase, DOORS®, Enterprise Document Management System™, Global Business Services ®, Global Technology Services ®, Information on Demand, ILOG, Maximo®, MQIntegrator®, MQSeries®, Netcool®, OMEGAMON, OpenPower, PureAnalytics™, PureApplication®, pureCluster™, PureCoverage®, PureData®, PureExperience®, PureFlex®, pureQuery®, pureScale®, PureSystems®, QRadar®, Rational®, Rhapsody®, SoDA, SPSS, StoredIQ, Tivoli®, Trusteer®, urban{code}®, Watson, WebSphere®, Worklight®, X-Force® and System z® Z/OS, are trademarks of International Business Machines Corporation, registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the Web at "Copyright and trademark information" at: www.ibm.com/legal/copytrade.shtml.
  • 33. Thank You Your Feedback is Important! Access the InterConnect 2015 Conference CONNECT Attendee Portal to complete your session surveys from your smartphone, laptop or conference kiosk.
  • 35. Differences in Column Types • Mapping fields to columns • Example: java.lang.String fields – OpenJPA: VARCHAR(254) – EclipseLink: VARCHAR(255) • Mostly non-problematic • Exception: java.util.Locale fields – OpenJPA: VARCHAR(254) – EclipseLink: BLOB(64000) – Solution – Use a type converter (introduced in JPA 2.1) – BLOB (object) ↔ VARCHAR (database) 35