SlideShare a Scribd company logo
© 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

More Related Content

What's hot

Why jakarta ee matters (ConFoo 2021)
Why jakarta ee matters (ConFoo 2021)Why jakarta ee matters (ConFoo 2021)
Why jakarta ee matters (ConFoo 2021)
Ryan Cuprak
 
What’s expected in Spring 5
What’s expected in Spring 5What’s expected in Spring 5
What’s expected in Spring 5
Gal Marder
 
Contributors Guide to the Jakarta EE 10 Galaxy
Contributors Guide to the Jakarta EE 10 GalaxyContributors Guide to the Jakarta EE 10 Galaxy
Contributors Guide to the Jakarta EE 10 Galaxy
Jakarta_EE
 
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
 
A Tour of the Modern Java Platform
A Tour of the Modern Java PlatformA Tour of the Modern Java Platform
A Tour of the Modern Java Platform
VMware Tanzu
 
How and why to upgrade to java 16 or 17
How and why to upgrade to java 16 or 17How and why to upgrade to java 16 or 17
How and why to upgrade to java 16 or 17
Johan Janssen
 
Java 9 Module System Introduction
Java 9 Module System IntroductionJava 9 Module System Introduction
Java 9 Module System Introduction
Dan Stine
 
Database Migrations with Gradle and Liquibase
Database Migrations with Gradle and LiquibaseDatabase Migrations with Gradle and Liquibase
Database Migrations with Gradle and Liquibase
Dan Stine
 
JDBC ppt
JDBC pptJDBC ppt
JDBC ppt
Rohit Jain
 
Oracle Fuson Middleware Diagnostics, Performance and Troubleshoot
Oracle Fuson Middleware Diagnostics, Performance and TroubleshootOracle Fuson Middleware Diagnostics, Performance and Troubleshoot
Oracle Fuson Middleware Diagnostics, Performance and Troubleshoot
Michel Schildmeijer
 
20180518 QNAP Seminar - Introduction to React Native
20180518 QNAP Seminar - Introduction to React Native20180518 QNAP Seminar - Introduction to React Native
20180518 QNAP Seminar - Introduction to React Native
Eric Deng
 
Java Database Connectivity (JDBC)
Java Database Connectivity (JDBC)Java Database Connectivity (JDBC)
Java Database Connectivity (JDBC)
Pooja Talreja
 
Servlet programming
Servlet programmingServlet programming
Servlet programming
Mallikarjuna G D
 
Reactive Relational Database Connectivity
Reactive Relational Database ConnectivityReactive Relational Database Connectivity
Reactive Relational Database Connectivity
VMware Tanzu
 
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
Miles Sabin
 
R2DBC Reactive Relational Database Connectivity
R2DBC Reactive Relational Database ConnectivityR2DBC Reactive Relational Database Connectivity
R2DBC Reactive Relational Database Connectivity
Maarten Smeets
 
Fun with Kubernetes and Payara Micro 5
Fun with Kubernetes and Payara Micro 5Fun with Kubernetes and Payara Micro 5
Fun with Kubernetes and Payara Micro 5
Payara
 
The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...
The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...
The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...
VMware Tanzu
 
Java database connectivity with MySql
Java database connectivity with MySqlJava database connectivity with MySql
Java database connectivity with MySql
Dhyey Dattani
 

What's hot (20)

Why jakarta ee matters (ConFoo 2021)
Why jakarta ee matters (ConFoo 2021)Why jakarta ee matters (ConFoo 2021)
Why jakarta ee matters (ConFoo 2021)
 
What’s expected in Spring 5
What’s expected in Spring 5What’s expected in Spring 5
What’s expected in Spring 5
 
Contributors Guide to the Jakarta EE 10 Galaxy
Contributors Guide to the Jakarta EE 10 GalaxyContributors Guide to the Jakarta EE 10 Galaxy
Contributors Guide to the Jakarta EE 10 Galaxy
 
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 ...
 
A Tour of the Modern Java Platform
A Tour of the Modern Java PlatformA Tour of the Modern Java Platform
A Tour of the Modern Java Platform
 
How and why to upgrade to java 16 or 17
How and why to upgrade to java 16 or 17How and why to upgrade to java 16 or 17
How and why to upgrade to java 16 or 17
 
Java 9 Module System Introduction
Java 9 Module System IntroductionJava 9 Module System Introduction
Java 9 Module System Introduction
 
Jdbc
JdbcJdbc
Jdbc
 
Database Migrations with Gradle and Liquibase
Database Migrations with Gradle and LiquibaseDatabase Migrations with Gradle and Liquibase
Database Migrations with Gradle and Liquibase
 
JDBC ppt
JDBC pptJDBC ppt
JDBC ppt
 
Oracle Fuson Middleware Diagnostics, Performance and Troubleshoot
Oracle Fuson Middleware Diagnostics, Performance and TroubleshootOracle Fuson Middleware Diagnostics, Performance and Troubleshoot
Oracle Fuson Middleware Diagnostics, Performance and Troubleshoot
 
20180518 QNAP Seminar - Introduction to React Native
20180518 QNAP Seminar - Introduction to React Native20180518 QNAP Seminar - Introduction to React Native
20180518 QNAP Seminar - Introduction to React Native
 
Java Database Connectivity (JDBC)
Java Database Connectivity (JDBC)Java Database Connectivity (JDBC)
Java Database Connectivity (JDBC)
 
Servlet programming
Servlet programmingServlet programming
Servlet programming
 
Reactive Relational Database Connectivity
Reactive Relational Database ConnectivityReactive Relational Database Connectivity
Reactive Relational Database Connectivity
 
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
 
R2DBC Reactive Relational Database Connectivity
R2DBC Reactive Relational Database ConnectivityR2DBC Reactive Relational Database Connectivity
R2DBC Reactive Relational Database Connectivity
 
Fun with Kubernetes and Payara Micro 5
Fun with Kubernetes and Payara Micro 5Fun with Kubernetes and Payara Micro 5
Fun with Kubernetes and Payara Micro 5
 
The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...
The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...
The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...
 
Java database connectivity with MySql
Java database connectivity with MySqlJava database connectivity with MySql
Java database connectivity with MySql
 

Similar to AAI-2235 Open JPA and EclipseLink Usage Scenarios Explained

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
 
Haj 4308-open jpa, eclipselink, and the migration toolkit
Haj 4308-open jpa, eclipselink, and the migration toolkitHaj 4308-open jpa, eclipselink, and the migration toolkit
Haj 4308-open jpa, eclipselink, and the migration toolkit
Kevin Sutter
 
Java9to19Final.pptx
Java9to19Final.pptxJava9to19Final.pptx
Java9to19Final.pptx
iFour Technolab Pvt. Ltd.
 
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
Arun Gupta
 
Eclipse vs Visual Works
Eclipse vs Visual WorksEclipse vs Visual Works
Eclipse vs Visual Works
Md Waresul Islam
 
Angular 2 overview
Angular 2 overviewAngular 2 overview
Angular 2 overview
Jesse Warden
 
Functional java 8
Functional java 8Functional java 8
Functional java 8
nick_maiorano
 
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
Lauren Yew
 
Microservices: The Best Practices
Microservices: The Best PracticesMicroservices: The Best Practices
Microservices: The Best Practices
Pavel Mička
 
Advanced debugging
Advanced debuggingAdvanced debugging
Advanced debugging
Ali Akhtar
 
01 introduction to struts2
01 introduction to struts201 introduction to struts2
01 introduction to struts2
Smita B Kumar
 
Migrating to Jakarta EE 10
Migrating to Jakarta EE 10Migrating to Jakarta EE 10
Migrating to Jakarta EE 10
Josh Juneau
 
JavaEE 6 tools coverage
JavaEE 6 tools coverageJavaEE 6 tools coverage
JavaEE 6 tools coverage
Ludovic Champenois
 
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
 
Impala Architecture presentation
Impala Architecture presentationImpala Architecture presentation
Impala Architecture presentation
hadooparchbook
 
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 Projects
Taro L. Saito
 
Composable Futures with Akka 2.0
Composable Futures with Akka 2.0Composable Futures with Akka 2.0
Composable Futures with Akka 2.0
Mike Slinn
 
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
Daniel McGhan
 

Similar to AAI-2235 Open JPA and EclipseLink Usage Scenarios Explained (20)

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)
 
Haj 4308-open jpa, eclipselink, and the migration toolkit
Haj 4308-open jpa, eclipselink, and the migration toolkitHaj 4308-open jpa, eclipselink, and the migration toolkit
Haj 4308-open jpa, eclipselink, and the migration toolkit
 
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
 
Eclipse vs Visual Works
Eclipse vs Visual WorksEclipse vs Visual Works
Eclipse vs Visual Works
 
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
 
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
 
Composable Futures with Akka 2.0
Composable Futures with Akka 2.0Composable Futures with Akka 2.0
Composable Futures with Akka 2.0
 
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
 

More from WASdev Community

Liberty Deep Dive
Liberty Deep DiveLiberty Deep Dive
Liberty Deep Dive
WASdev Community
 
Introduction to WebSockets
Introduction to WebSocketsIntroduction to WebSockets
Introduction to WebSockets
WASdev Community
 
Don't Wait! Develop Responsive Applications with Java EE7 Instead
Don't Wait! Develop Responsive Applications with Java EE7 InsteadDon't Wait! Develop Responsive Applications with Java EE7 Instead
Don't Wait! Develop Responsive Applications with Java EE7 Instead
WASdev Community
 
Liberty management
Liberty managementLiberty management
Liberty management
WASdev Community
 
WebSphere App Server vs JBoss vs WebLogic vs Tomcat
WebSphere App Server vs JBoss vs WebLogic vs TomcatWebSphere App Server vs JBoss vs WebLogic vs Tomcat
WebSphere App Server vs JBoss vs WebLogic vs Tomcat
WASdev Community
 
AAI-3281 Smarter Production with WebSphere Application Server ND Intelligent ...
AAI-3281 Smarter Production with WebSphere Application Server ND Intelligent ...AAI-3281 Smarter Production with WebSphere Application Server ND Intelligent ...
AAI-3281 Smarter Production with WebSphere Application Server ND Intelligent ...
WASdev Community
 
AAI-3218 Production Deployment Best Practices for WebSphere Liberty Profile
AAI-3218 Production Deployment Best Practices for WebSphere Liberty ProfileAAI-3218 Production Deployment Best Practices for WebSphere Liberty Profile
AAI-3218 Production Deployment Best Practices for WebSphere Liberty Profile
WASdev Community
 
AAI-1445 Managing Dynamic Workloads with WebSphere ND and in the Cloud
AAI-1445 Managing Dynamic Workloads with WebSphere ND and in the CloudAAI-1445 Managing Dynamic Workloads with WebSphere ND and in the Cloud
AAI-1445 Managing Dynamic Workloads with WebSphere ND and in the Cloud
WASdev Community
 
ASZ-3034 Build a WebSphere Linux Cloud on System z: From Roll-Your-Own to Pre...
ASZ-3034 Build a WebSphere Linux Cloud on System z: From Roll-Your-Own to Pre...ASZ-3034 Build a WebSphere Linux Cloud on System z: From Roll-Your-Own to Pre...
ASZ-3034 Build a WebSphere Linux Cloud on System z: From Roll-Your-Own to Pre...
WASdev Community
 
AAI-4847 Full Disclosure on the Performance Characteristics of WebSphere Appl...
AAI-4847 Full Disclosure on the Performance Characteristics of WebSphere Appl...AAI-4847 Full Disclosure on the Performance Characteristics of WebSphere Appl...
AAI-4847 Full Disclosure on the Performance Characteristics of WebSphere Appl...
WASdev Community
 
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
WASdev Community
 
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
WASdev Community
 
Deploy, Monitor and Manage in Style with WebSphere Liberty Admin Center
Deploy, Monitor and Manage in Style with WebSphere Liberty Admin CenterDeploy, Monitor and Manage in Style with WebSphere Liberty Admin Center
Deploy, Monitor and Manage in Style with WebSphere Liberty Admin Center
WASdev Community
 
AAI-2075 Evolving an IBM WebSphere Topology to Manage a Changing Workloa
AAI-2075 Evolving an IBM WebSphere Topology to Manage a Changing WorkloaAAI-2075 Evolving an IBM WebSphere Topology to Manage a Changing Workloa
AAI-2075 Evolving an IBM WebSphere Topology to Manage a Changing Workloa
WASdev Community
 
AAI-2016 WebSphere Application Server Installation and Maintenance in the Ent...
AAI-2016 WebSphere Application Server Installation and Maintenance in the Ent...AAI-2016 WebSphere Application Server Installation and Maintenance in the Ent...
AAI-2016 WebSphere Application Server Installation and Maintenance in the Ent...
WASdev Community
 
AAI-2013 Preparing to Fail: Practical WebSphere Application Server High Avail...
AAI-2013 Preparing to Fail: Practical WebSphere Application Server High Avail...AAI-2013 Preparing to Fail: Practical WebSphere Application Server High Avail...
AAI-2013 Preparing to Fail: Practical WebSphere Application Server High Avail...
WASdev Community
 
AAI-1305 Choosing WebSphere Liberty for Java EE Deployments
AAI-1305 Choosing WebSphere Liberty for Java EE DeploymentsAAI-1305 Choosing WebSphere Liberty for Java EE Deployments
AAI-1305 Choosing WebSphere Liberty for Java EE Deployments
WASdev Community
 
AAI-1304 Technical Deep-Dive into IBM WebSphere Liberty
AAI-1304 Technical Deep-Dive into IBM WebSphere LibertyAAI-1304 Technical Deep-Dive into IBM WebSphere Liberty
AAI-1304 Technical Deep-Dive into IBM WebSphere Liberty
WASdev Community
 
Planning For Catastrophe with IBM WAS and IBM BPM
Planning For Catastrophe with IBM WAS and IBM BPMPlanning For Catastrophe with IBM WAS and IBM BPM
Planning For Catastrophe with IBM WAS and IBM BPMWASdev Community
 
Arduinos, application servers, and me: Adventures in and out of the cloud
Arduinos, application servers, and me: Adventures in and out of the cloudArduinos, application servers, and me: Adventures in and out of the cloud
Arduinos, application servers, and me: Adventures in and out of the cloud
WASdev Community
 

More from WASdev Community (20)

Liberty Deep Dive
Liberty Deep DiveLiberty Deep Dive
Liberty Deep Dive
 
Introduction to WebSockets
Introduction to WebSocketsIntroduction to WebSockets
Introduction to WebSockets
 
Don't Wait! Develop Responsive Applications with Java EE7 Instead
Don't Wait! Develop Responsive Applications with Java EE7 InsteadDon't Wait! Develop Responsive Applications with Java EE7 Instead
Don't Wait! Develop Responsive Applications with Java EE7 Instead
 
Liberty management
Liberty managementLiberty management
Liberty management
 
WebSphere App Server vs JBoss vs WebLogic vs Tomcat
WebSphere App Server vs JBoss vs WebLogic vs TomcatWebSphere App Server vs JBoss vs WebLogic vs Tomcat
WebSphere App Server vs JBoss vs WebLogic vs Tomcat
 
AAI-3281 Smarter Production with WebSphere Application Server ND Intelligent ...
AAI-3281 Smarter Production with WebSphere Application Server ND Intelligent ...AAI-3281 Smarter Production with WebSphere Application Server ND Intelligent ...
AAI-3281 Smarter Production with WebSphere Application Server ND Intelligent ...
 
AAI-3218 Production Deployment Best Practices for WebSphere Liberty Profile
AAI-3218 Production Deployment Best Practices for WebSphere Liberty ProfileAAI-3218 Production Deployment Best Practices for WebSphere Liberty Profile
AAI-3218 Production Deployment Best Practices for WebSphere Liberty Profile
 
AAI-1445 Managing Dynamic Workloads with WebSphere ND and in the Cloud
AAI-1445 Managing Dynamic Workloads with WebSphere ND and in the CloudAAI-1445 Managing Dynamic Workloads with WebSphere ND and in the Cloud
AAI-1445 Managing Dynamic Workloads with WebSphere ND and in the Cloud
 
ASZ-3034 Build a WebSphere Linux Cloud on System z: From Roll-Your-Own to Pre...
ASZ-3034 Build a WebSphere Linux Cloud on System z: From Roll-Your-Own to Pre...ASZ-3034 Build a WebSphere Linux Cloud on System z: From Roll-Your-Own to Pre...
ASZ-3034 Build a WebSphere Linux Cloud on System z: From Roll-Your-Own to Pre...
 
AAI-4847 Full Disclosure on the Performance Characteristics of WebSphere Appl...
AAI-4847 Full Disclosure on the Performance Characteristics of WebSphere Appl...AAI-4847 Full Disclosure on the Performance Characteristics of WebSphere Appl...
AAI-4847 Full Disclosure on the Performance Characteristics of WebSphere Appl...
 
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
 
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
 
Deploy, Monitor and Manage in Style with WebSphere Liberty Admin Center
Deploy, Monitor and Manage in Style with WebSphere Liberty Admin CenterDeploy, Monitor and Manage in Style with WebSphere Liberty Admin Center
Deploy, Monitor and Manage in Style with WebSphere Liberty Admin Center
 
AAI-2075 Evolving an IBM WebSphere Topology to Manage a Changing Workloa
AAI-2075 Evolving an IBM WebSphere Topology to Manage a Changing WorkloaAAI-2075 Evolving an IBM WebSphere Topology to Manage a Changing Workloa
AAI-2075 Evolving an IBM WebSphere Topology to Manage a Changing Workloa
 
AAI-2016 WebSphere Application Server Installation and Maintenance in the Ent...
AAI-2016 WebSphere Application Server Installation and Maintenance in the Ent...AAI-2016 WebSphere Application Server Installation and Maintenance in the Ent...
AAI-2016 WebSphere Application Server Installation and Maintenance in the Ent...
 
AAI-2013 Preparing to Fail: Practical WebSphere Application Server High Avail...
AAI-2013 Preparing to Fail: Practical WebSphere Application Server High Avail...AAI-2013 Preparing to Fail: Practical WebSphere Application Server High Avail...
AAI-2013 Preparing to Fail: Practical WebSphere Application Server High Avail...
 
AAI-1305 Choosing WebSphere Liberty for Java EE Deployments
AAI-1305 Choosing WebSphere Liberty for Java EE DeploymentsAAI-1305 Choosing WebSphere Liberty for Java EE Deployments
AAI-1305 Choosing WebSphere Liberty for Java EE Deployments
 
AAI-1304 Technical Deep-Dive into IBM WebSphere Liberty
AAI-1304 Technical Deep-Dive into IBM WebSphere LibertyAAI-1304 Technical Deep-Dive into IBM WebSphere Liberty
AAI-1304 Technical Deep-Dive into IBM WebSphere Liberty
 
Planning For Catastrophe with IBM WAS and IBM BPM
Planning For Catastrophe with IBM WAS and IBM BPMPlanning For Catastrophe with IBM WAS and IBM BPM
Planning For Catastrophe with IBM WAS and IBM BPM
 
Arduinos, application servers, and me: Adventures in and out of the cloud
Arduinos, application servers, and me: Adventures in and out of the cloudArduinos, application servers, and me: Adventures in and out of the cloud
Arduinos, application servers, and me: Adventures in and out of the cloud
 

Recently uploaded

Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
abdulrafaychaudhry
 
Pro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp BookPro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp Book
abdulrafaychaudhry
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Łukasz Chruściel
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
Globus
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
Łukasz Chruściel
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Mind IT Systems
 
Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)
abdulrafaychaudhry
 
Nidhi Software Price. Fact , Costs, Tips
Nidhi Software Price. Fact , Costs, TipsNidhi Software Price. Fact , Costs, Tips
Nidhi Software Price. Fact , Costs, Tips
vrstrong314
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
Deuglo Infosystem Pvt Ltd
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
lorraineandreiamcidl
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
AI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website CreatorAI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website Creator
Google
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke
 
Enterprise Software Development with No Code Solutions.pptx
Enterprise Software Development with No Code Solutions.pptxEnterprise Software Development with No Code Solutions.pptx
Enterprise Software Development with No Code Solutions.pptx
QuickwayInfoSystems3
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 

Recently uploaded (20)

Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
 
Pro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp BookPro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp Book
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
 
Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)
 
Nidhi Software Price. Fact , Costs, Tips
Nidhi Software Price. Fact , Costs, TipsNidhi Software Price. Fact , Costs, Tips
Nidhi Software Price. Fact , Costs, Tips
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
AI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website CreatorAI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website Creator
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
 
Enterprise Software Development with No Code Solutions.pptx
Enterprise Software Development with No Code Solutions.pptxEnterprise Software Development with No Code Solutions.pptx
Enterprise Software Development with No Code Solutions.pptx
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 

AAI-2235 Open JPA 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