SlideShare a Scribd company logo
PEJ-5303
OpenJPA and EclipseLink
Usage Scenarios Explained
Kevin Sutter, STSM
WebSphere Java EE and JPA Architect
Twitter: @kwsutter
LinkedIn: https://www.linkedin.com/in/kevinwsutter
Cindy High, Senior Software Engineer
WebSphere Migration Toolkit
Twitter: @CTHigh
LinkedIn: http://www.linkedin.com/in/cindyhigh
Please Note:
2
•  IBM’s statements regarding its plans, directions, and intent are subject to change or withdrawal without notice at IBM’s sole
discretion.
•  Information regarding potential future products is intended to outline our general product direction and it should not be relied on in
making a purchasing decision.
•  The information mentioned regarding potential future products is not a commitment, promise, or legal obligation to deliver any
material, code or functionality. Information about potential future products may not be incorporated into any contract.
•  The development, release, and timing of any future features or functionality described for our products remains at our sole discretion.
•  Performance is based on measurements and projections using standard IBM benchmarks in a controlled environment. The actual
throughput or performance that any user will experience will vary depending upon many factors, including considerations such as the
amount of multiprogramming in the user’s job stream, the I/O configuration, the storage configuration, and the workload processed.
Therefore, no assurance can be given that an individual user will achieve results similar to those stated here.
Agenda
•  OpenJPA and EclipseLink
•  JPA version comparisons
•  OpenJPA to EclipseLink Migration
•  High level concepts
•  OpenJPA to EclipseLink Investigation
•  Specific differences
•  Migration Toolkit
•  Summary
•  Q & A
3
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
•  Moving forward…
•  OpenJPA will continue to be supported in WebSphere for
many, many years
•  At least until JPA 2.0 is deprecated…
•  Both WebSphere traditional and Liberty
5
Multiple JPA Providers
•  Do I have 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 features, you may need to
change…
•  Many of the JPA 2.1 features have corresponding OpenJPA
proprietary solutions
•  Apache OpenJPA (ie. JPA 2.0) is compatible with other Java EE 7
features
•  Allows for an easier, more gradual JPA migration
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
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
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
9
Feature Comparison Chart
10
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
11
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
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 automatically weaves/enhances Entities
for both OpenJPA and EclipseLink
•  Applications packaged with entities pre-enhanced by OpenJPA
must be recompiled and repackaged
•  Removes OpenJPA specific enhancement bytecode
14
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
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
17
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
18
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
19
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
20
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: Add @javax.persistence.Column
21
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
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
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) 24
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
26
Migration Toolkit
Do you need to migrate?
Best practice is to
•  Use OpenJPA for your existing applications
•  Use EclipseLink for your new applications
But…
If you need to migrate, we have tools to assist.
28
An Overview of WebSphere Migration Tools
A set of tools help you:
- Migrate from third-party application servers to WebSphere Application Server
- Migrate between versions of WebSphere Application Server
- Migrate to WebSphere Application Server to the Cloud
29
Migration discovery Binaries analysis Source migration Config migration
On-line tool that helps you
•  Estimate the effort required to
migrate your application to
WebSphere Application Server
from third-party application
servers
•  Select the IBM cloud platform
suited to host your application
and estimate migration to that
platform
Command-line analysis of application
binaries that provides
•  High level evaluation report
showing the Java EE
technologies your application
uses
•  Detailed analysis for migration
between versions of
WebSphere traditional, Liberty,
and Liberty Core
•  Cloud migration for instant
runtimes differences
•  Java EE 7 differences
•  Cloud connectivity analysis
Eclipse plugins that scans application
source to provide
•  High level evaluation report
•  A line-by-line analysis of code
changes required
•  Detailed analysis for migrating
from third-party applications
servers
•  Detailed analysis for migration
between versions of WebSphere
traditional, Liberty, and Liberty
Core
•  Java EE 7 differences
•  Cloud migration for instant
runtimes differences
•  Cloud connectivity analysis
Eclipse plugin that helps migrate
server configuration
•  From third-party application
servers to WebSphere
Application Server
•  Between versions of
WebSphere Application Server
including WebSphere traditional
to Liberty.
How can the migration toolkit help?
•  Scan for OpenJPA to EclipseLink differences
•  The Eclipse-based, source scanning migration tool
•  Contains 19 Java rules with 9 quick fixes
•  Contains 5 XML rules with 2 quick fixes
•  Focuses on annotated JPA applications
•  Provides some configuration support
•  The binary scanning tool
•  Detects Entities enhanced for OpenJPA
•  Contains 2 Java rules
•  Contains 5 XML rules
30
Where can I get the migration tools?
•  http://wasdev.net
31
•  Eclipse Marketplace
How do I use the Eclipse migration tool?
Select Run > Analysis… to configure the JPA related rules.
• Choose the OpenJPA to EclipseLink JPA Migration rule set if you are only
interested in the JPA rules.
32
How do I use the Eclipse migration tool?
•  Select Run > Analysis to configure JPA related rules.
•  Choose the WebSphere
Application Server Version
Migration rule set if you want
to do more analysis.
•  Select Java EE 7 as the
target Java EE version
•  Select JPA
33
34
See the code to change
•  After running Analysis, use the Software Analyzer Results view to
interpret the scan.
35
See the proposed fix before applying the change
When you need more help
36
•  Each rule has help that you can view from the results or from the
configuration dialog.
37
What can I expect? -- Java rules
38
What can I expect? -- XML rules
Note: The rule Mapping files are not processed during OpenJPA to
EclipseLink migration is a reminder that most of the rules are Java
annotation rules. If define your Entities in mapping files rather than using
JPA annotations, you will need to make manual mapping file changes.
What if I don’t have source code?
The binary scanner detects
•  Enhanced Java code – only in the binary scanner
•  the XML issues
•  org.apache.openjpa packages in use
39
How do I use the binary scanner?
•  java -jar binaryAppScanner.jar --help
40
Resources
Other 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
42
Useful Links
•  EclipseLink JPA provider for Liberty profile article
https://developer.ibm.com/wasdev/blog/2014/05/28/
eclipselink-jpa-provider-liberty-profile/
•  EclipseLink Migration Wiki Page
https://wiki.eclipse.org/EclipseLink/Examples/JPA/Migration/
OpenJPA
43
Useful Links
•  WebSphere Application Server Migration Toolkit
•  wasdev.net download and links to the documentation
•  https://developer.ibm.com/wasdev/downloads/#asset/tools-WebSphere_Application_Server_Migration_Toolkit
•  Eclipse Marketplace
•  https://marketplace.eclipse.org/content/ibm-websphere-application-server-migration-toolkit
•  Migration Toolkit for Application Binaries
•  wasdev.net download and links to the documentation
•  https://developer.ibm.com/wasdev/downloads/#asset/tools-Migration_Toolkit_for_Application_Binaries
44
Sampling of Related Sessions…
•  PEJ-5296: Java EE 7 Overview
–  Monday, 10:30am-11:30am, Mandalay Bay North, South Pacific Ballroom A
•  PEJ-2876: Configuring WebSphere Application Server for Enterprise Messaging Needs
–  Monday, 12:00pm-1:00pm, Mandalay Bay North, Islander Ballroom G
•  PEJ-2139: Technical Deep Dive into IBM WebSphere Liberty
–  Monday, 3:00pm-4:00pm, Mandalay Bay North, South Pacific Ballroom A
•  PEJ-1603: IBM WebSphere Liberty in the Wild
–  Tuesday, 1:15pm-2:15pm, Mandalay Bay North, South Pacific Ballroom A
•  PEJ-6480: Don’t Wait! Developing Responsive Applications with Java EE 7
–  Tuesday, 1:15pm-2:15pm, Mandalay Bay North, Islander Ballroom G
•  PEJ-1979: Hands-On with the IBM WebSphere Application Server Migration Toolkit (LAB)
–  Tuesday, 01:15 PM - 02:15 PM, MGM Grand - Room 320
•  PEJ-2151: Agile Development Using Java EE 7 with WebSphere Liberty Profile (LAB)
–  Wednesday, 8:30am-9:30am, MGM Grand Room 306
•  PEJ-1973: WAS Migration: Benefits, Planning, and Best Practices
–  Wednesday, 12:00pm-1:00pm, Mandalay Bay North, South Pacific Ballroom A
•  PEJ-1902: Migrate Java EE Applications to Cloud with Cloud Migration Toolkit
–  Wednesday, 2:30pm-12:15pm, Mandalay Bay North, Islander Ballroom G
•  PEJ-5303: OpenJPA and EclipseLink Usage Scenarios Explained
–  Thursday, 11:30am-12:15pm, Mandalay Bay North, South Pacific Ballroom A
45 45
Notices and Disclaimers
46
Copyright © 2016 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.
47
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 h erein 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, Aspera®, Bluemix, Blueworks Live, CICS, Clearcase, Cognos®, DOORS®, Emptoris®, Enterprise Document Management System™, FASP®,
FileNet®, Global Business Services ®, Global Technology Services ®, IBM ExperienceOne™, IBM SmartCloud®, IBM Social Business®, Information on Demand, ILOG,
Maximo®, MQIntegrator®, MQSeries®, Netcool®, OMEGAMON, OpenPower, PureAnalytics™, PureApplication®, pureCluster™, PureCoverage®, PureData®,
PureExperience®, PureFlex®, pureQuery®, pureScale®, PureSystems®, QRadar®, Rational®, Rhapsody®, Smarter Commerce®, SoDA, SPSS, Sterling Commerce®,
StoredIQ, Tealeaf®, Tivoli®, Trusteer®, Unica®, 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 2016 Conference 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)
50

More Related Content

What's hot (20)

PDF
Contributors Guide to the Jakarta EE 10 Galaxy
Jakarta_EE
 
PPTX
Why jakarta ee matters (ConFoo 2021)
Ryan Cuprak
 
PPTX
What’s expected in Spring 5
Gal Marder
 
PDF
A Tour of the Modern Java Platform
VMware Tanzu
 
PDF
Scaladays 2010 - The Scala IDE for Eclipse - Retrospect and Prospect for 2.8 ...
Miles Sabin
 
PDF
How and why to upgrade to java 16 or 17
Johan Janssen
 
PPTX
Jdbc
Yamuna Devi
 
PPTX
Java 9 Module System Introduction
Dan Stine
 
PPTX
JDBC ppt
Rohit Jain
 
PPTX
Database Migrations with Gradle and Liquibase
Dan Stine
 
PPTX
20180518 QNAP Seminar - Introduction to React Native
Eric Deng
 
PDF
Oracle Fuson Middleware Diagnostics, Performance and Troubleshoot
Michel Schildmeijer
 
PPT
Servlet programming
Mallikarjuna G D
 
PPTX
Java Database Connectivity (JDBC)
Pooja Talreja
 
PDF
Reactive Relational Database Connectivity
VMware Tanzu
 
PPTX
Fun with Kubernetes and Payara Micro 5
Payara
 
PPTX
R2DBC Reactive Relational Database Connectivity
Maarten Smeets
 
PDF
The Scala IDE for Eclipse - Retrospect and Prospect for 2.8.0
Miles Sabin
 
PDF
The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...
VMware Tanzu
 
PPTX
Java database connectivity with MySql
Dhyey Dattani
 
Contributors Guide to the Jakarta EE 10 Galaxy
Jakarta_EE
 
Why jakarta ee matters (ConFoo 2021)
Ryan Cuprak
 
What’s expected in Spring 5
Gal Marder
 
A Tour of the Modern Java Platform
VMware Tanzu
 
Scaladays 2010 - The Scala IDE for Eclipse - Retrospect and Prospect for 2.8 ...
Miles Sabin
 
How and why to upgrade to java 16 or 17
Johan Janssen
 
Java 9 Module System Introduction
Dan Stine
 
JDBC ppt
Rohit Jain
 
Database Migrations with Gradle and Liquibase
Dan Stine
 
20180518 QNAP Seminar - Introduction to React Native
Eric Deng
 
Oracle Fuson Middleware Diagnostics, Performance and Troubleshoot
Michel Schildmeijer
 
Servlet programming
Mallikarjuna G D
 
Java Database Connectivity (JDBC)
Pooja Talreja
 
Reactive Relational Database Connectivity
VMware Tanzu
 
Fun with Kubernetes and Payara Micro 5
Payara
 
R2DBC Reactive Relational Database Connectivity
Maarten Smeets
 
The Scala IDE for Eclipse - Retrospect and Prospect for 2.8.0
Miles Sabin
 
The Making of the Oracle R2DBC Driver and How to Take Your Code from Synchron...
VMware Tanzu
 
Java database connectivity with MySql
Dhyey Dattani
 

Viewers also liked (20)

PDF
InterConnect 2016 Java EE 7 Overview (PEJ-5296)
Kevin Sutter
 
PDF
WebSphere Application Server - Meeting Your Cloud and On-Premise Demands
Ian Robinson
 
PDF
IBM MQ - Comparing Distributed and z/OS platforms
MarkTaylorIBM
 
PDF
MQ Security Overview
MarkTaylorIBM
 
PDF
IBM MQ - Monitoring and Managing Hybrid Messaging Environments
MarkTaylorIBM
 
PDF
Big Data: InterConnect 2016 Session on Getting Started with Big Data Analytics
Cynthia Saracco
 
PDF
IBM MQ - Comparing Distributed and z/OS platforms
MarkTaylorIBM
 
PDF
IBM MQ - better application performance
MarkTaylorIBM
 
PDF
MQ What's New Beyond V8 - V8003 level
MarkTaylorIBM
 
PDF
IBM WebSphere application server
IBM Sverige
 
PDF
What's new in IBM MQ Messaging
MarkTaylorIBM
 
PDF
IBM InterConnect 2016: Security for DevOps in an Enterprise
Sanjeev Sharma
 
PPTX
Understanding mq deployment choices and use cases
Leif Davidsen
 
PDF
Iib v10 performance problem determination examples
MartinRoss_IBM
 
PDF
IBM MQ - High Availability and Disaster Recovery
MarkTaylorIBM
 
PPT
Expanding your options with the IBM MQ Appliance - IBM InterConnect 2016
Leif Davidsen
 
PPTX
InterConnect 2017 HBP-2884-IBM BPM upgrade and migration made easy
Brian Petrini
 
PDF
DevOps & Continuous Test for IIB and IBM MQ
Stuart Feasey
 
PPTX
IBM Messaging Security - Why securing your environment is important : IBM Int...
Leif Davidsen
 
PDF
IBM MQ Disaster Recovery
MarkTaylorIBM
 
InterConnect 2016 Java EE 7 Overview (PEJ-5296)
Kevin Sutter
 
WebSphere Application Server - Meeting Your Cloud and On-Premise Demands
Ian Robinson
 
IBM MQ - Comparing Distributed and z/OS platforms
MarkTaylorIBM
 
MQ Security Overview
MarkTaylorIBM
 
IBM MQ - Monitoring and Managing Hybrid Messaging Environments
MarkTaylorIBM
 
Big Data: InterConnect 2016 Session on Getting Started with Big Data Analytics
Cynthia Saracco
 
IBM MQ - Comparing Distributed and z/OS platforms
MarkTaylorIBM
 
IBM MQ - better application performance
MarkTaylorIBM
 
MQ What's New Beyond V8 - V8003 level
MarkTaylorIBM
 
IBM WebSphere application server
IBM Sverige
 
What's new in IBM MQ Messaging
MarkTaylorIBM
 
IBM InterConnect 2016: Security for DevOps in an Enterprise
Sanjeev Sharma
 
Understanding mq deployment choices and use cases
Leif Davidsen
 
Iib v10 performance problem determination examples
MartinRoss_IBM
 
IBM MQ - High Availability and Disaster Recovery
MarkTaylorIBM
 
Expanding your options with the IBM MQ Appliance - IBM InterConnect 2016
Leif Davidsen
 
InterConnect 2017 HBP-2884-IBM BPM upgrade and migration made easy
Brian Petrini
 
DevOps & Continuous Test for IIB and IBM MQ
Stuart Feasey
 
IBM Messaging Security - Why securing your environment is important : IBM Int...
Leif Davidsen
 
IBM MQ Disaster Recovery
MarkTaylorIBM
 
Ad

Similar to InterConnect 2016, OpenJPA and EclipseLink Usage Scenarios (PEJ-5303) (20)

PDF
Haj 4308-open jpa, eclipselink, and the migration toolkit
Kevin Sutter
 
PDF
AAI-2235 Open JPA and EclipseLink Usage Scenarios Explained
WASdev Community
 
PDF
Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"
GlobalLogic Ukraine
 
PDF
Overview of Java EE 6 by Roberto Chinnici at SFJUG
Marakana Inc.
 
PDF
Migrating to Jakarta EE 10
Josh Juneau
 
PPTX
Module-3 for career and JFSD ppt for study.pptx
ViratKohli78
 
PDF
Java EE 6, Eclipse @ EclipseCon
Ludovic Champenois
 
PDF
JavaOne 2014 Java EE 8 Booth Slides
Edward Burns
 
ODP
OTN Developer Days - Java EE 6
glassfish
 
PDF
Tools Coverage for the Java EE Platform @ Silicon Valley Code Camp 2010
Arun Gupta
 
PDF
Utilizing JSF Front Ends with Microservices
Josh Juneau
 
PPTX
Java9to19Final.pptx
iFour Technolab Pvt. Ltd.
 
PPTX
Basic React Knowledge.
jacobryne
 
PDF
Basic React Knowledge.
jacobryne
 
PDF
Deep Dive Hands-on in Java EE 6 - Oredev 2010
Arun Gupta
 
PDF
Java EE 7 Recipes for Concurrency - JavaOne 2014
Josh Juneau
 
PPTX
Functional java 8
nick_maiorano
 
PPTX
OpenNTF Webinar 2022-08 - XPages Jakarta EE Support in Practice
Jesse Gallagher
 
PPTX
Protractor survival guide
László Andrási
 
PPTX
Java EE8 - by Kito Mann
Kile Niklawski
 
Haj 4308-open jpa, eclipselink, and the migration toolkit
Kevin Sutter
 
AAI-2235 Open JPA and EclipseLink Usage Scenarios Explained
WASdev Community
 
Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"
GlobalLogic Ukraine
 
Overview of Java EE 6 by Roberto Chinnici at SFJUG
Marakana Inc.
 
Migrating to Jakarta EE 10
Josh Juneau
 
Module-3 for career and JFSD ppt for study.pptx
ViratKohli78
 
Java EE 6, Eclipse @ EclipseCon
Ludovic Champenois
 
JavaOne 2014 Java EE 8 Booth Slides
Edward Burns
 
OTN Developer Days - Java EE 6
glassfish
 
Tools Coverage for the Java EE Platform @ Silicon Valley Code Camp 2010
Arun Gupta
 
Utilizing JSF Front Ends with Microservices
Josh Juneau
 
Java9to19Final.pptx
iFour Technolab Pvt. Ltd.
 
Basic React Knowledge.
jacobryne
 
Basic React Knowledge.
jacobryne
 
Deep Dive Hands-on in Java EE 6 - Oredev 2010
Arun Gupta
 
Java EE 7 Recipes for Concurrency - JavaOne 2014
Josh Juneau
 
Functional java 8
nick_maiorano
 
OpenNTF Webinar 2022-08 - XPages Jakarta EE Support in Practice
Jesse Gallagher
 
Protractor survival guide
László Andrási
 
Java EE8 - by Kito Mann
Kile Niklawski
 
Ad

More from Kevin Sutter (9)

PDF
DevNexus 2019: MicroProfile and Jakarta EE - What's Next?
Kevin Sutter
 
PDF
Implementing Microservices with Jakarta EE and MicroProfile
Kevin Sutter
 
PDF
Bmc 4286-micro profile-a programming model for microservices-based applications
Kevin Sutter
 
PDF
Ham 4393-micro profile, java ee, and the application server
Kevin Sutter
 
PDF
Haj 4328-java ee 7 overview
Kevin Sutter
 
PDF
Haj 4344-java se 9 and the application server-1
Kevin Sutter
 
PDF
Bas 5676-java ee 8 introduction
Kevin Sutter
 
PDF
AAI 2236-Using the New Java Concurrency Utilities with IBM WebSphere
Kevin Sutter
 
PDF
AAI 1713-Introduction to Java EE 7
Kevin Sutter
 
DevNexus 2019: MicroProfile and Jakarta EE - What's Next?
Kevin Sutter
 
Implementing Microservices with Jakarta EE and MicroProfile
Kevin Sutter
 
Bmc 4286-micro profile-a programming model for microservices-based applications
Kevin Sutter
 
Ham 4393-micro profile, java ee, and the application server
Kevin Sutter
 
Haj 4328-java ee 7 overview
Kevin Sutter
 
Haj 4344-java se 9 and the application server-1
Kevin Sutter
 
Bas 5676-java ee 8 introduction
Kevin Sutter
 
AAI 2236-Using the New Java Concurrency Utilities with IBM WebSphere
Kevin Sutter
 
AAI 1713-Introduction to Java EE 7
Kevin Sutter
 

Recently uploaded (20)

PDF
Top Agile Project Management Tools for Teams in 2025
Orangescrum
 
PPTX
Homogeneity of Variance Test Options IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PDF
TheFutureIsDynamic-BoxLang witch Luis Majano.pdf
Ortus Solutions, Corp
 
PPTX
Agentic Automation: Build & Deploy Your First UiPath Agent
klpathrudu
 
PPTX
Build a Custom Agent for Agentic Testing.pptx
klpathrudu
 
PPTX
Foundations of Marketo Engage - Powering Campaigns with Marketo Personalization
bbedford2
 
PDF
MiniTool Power Data Recovery 8.8 With Crack New Latest 2025
bashirkhan333g
 
PPTX
Coefficient of Variance in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PPTX
ChiSquare Procedure in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PDF
Download Canva Pro 2025 PC Crack Full Latest Version
bashirkhan333g
 
PPTX
Finding Your License Details in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PPTX
OpenChain @ OSS NA - In From the Cold: Open Source as Part of Mainstream Soft...
Shane Coughlan
 
PDF
MiniTool Partition Wizard Free Crack + Full Free Download 2025
bashirkhan333g
 
PDF
Wondershare PDFelement Pro Crack for MacOS New Version Latest 2025
bashirkhan333g
 
PDF
AOMEI Partition Assistant Crack 10.8.2 + WinPE Free Downlaod New Version 2025
bashirkhan333g
 
PDF
Dipole Tech Innovations – Global IT Solutions for Business Growth
dipoletechi3
 
PPTX
Agentic Automation Journey Series Day 2 – Prompt Engineering for UiPath Agents
klpathrudu
 
PDF
Technical-Careers-Roadmap-in-Software-Market.pdf
Hussein Ali
 
PDF
Digger Solo: Semantic search and maps for your local files
seanpedersen96
 
PPTX
Empowering Asian Contributions: The Rise of Regional User Groups in Open Sour...
Shane Coughlan
 
Top Agile Project Management Tools for Teams in 2025
Orangescrum
 
Homogeneity of Variance Test Options IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
TheFutureIsDynamic-BoxLang witch Luis Majano.pdf
Ortus Solutions, Corp
 
Agentic Automation: Build & Deploy Your First UiPath Agent
klpathrudu
 
Build a Custom Agent for Agentic Testing.pptx
klpathrudu
 
Foundations of Marketo Engage - Powering Campaigns with Marketo Personalization
bbedford2
 
MiniTool Power Data Recovery 8.8 With Crack New Latest 2025
bashirkhan333g
 
Coefficient of Variance in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
ChiSquare Procedure in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
Download Canva Pro 2025 PC Crack Full Latest Version
bashirkhan333g
 
Finding Your License Details in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
OpenChain @ OSS NA - In From the Cold: Open Source as Part of Mainstream Soft...
Shane Coughlan
 
MiniTool Partition Wizard Free Crack + Full Free Download 2025
bashirkhan333g
 
Wondershare PDFelement Pro Crack for MacOS New Version Latest 2025
bashirkhan333g
 
AOMEI Partition Assistant Crack 10.8.2 + WinPE Free Downlaod New Version 2025
bashirkhan333g
 
Dipole Tech Innovations – Global IT Solutions for Business Growth
dipoletechi3
 
Agentic Automation Journey Series Day 2 – Prompt Engineering for UiPath Agents
klpathrudu
 
Technical-Careers-Roadmap-in-Software-Market.pdf
Hussein Ali
 
Digger Solo: Semantic search and maps for your local files
seanpedersen96
 
Empowering Asian Contributions: The Rise of Regional User Groups in Open Sour...
Shane Coughlan
 

InterConnect 2016, OpenJPA and EclipseLink Usage Scenarios (PEJ-5303)

  • 1. PEJ-5303 OpenJPA and EclipseLink Usage Scenarios Explained Kevin Sutter, STSM WebSphere Java EE and JPA Architect Twitter: @kwsutter LinkedIn: https://www.linkedin.com/in/kevinwsutter Cindy High, Senior Software Engineer WebSphere Migration Toolkit Twitter: @CTHigh LinkedIn: http://www.linkedin.com/in/cindyhigh
  • 2. Please Note: 2 •  IBM’s statements regarding its plans, directions, and intent are subject to change or withdrawal without notice at IBM’s sole discretion. •  Information regarding potential future products is intended to outline our general product direction and it should not be relied on in making a purchasing decision. •  The information mentioned regarding potential future products is not a commitment, promise, or legal obligation to deliver any material, code or functionality. Information about potential future products may not be incorporated into any contract. •  The development, release, and timing of any future features or functionality described for our products remains at our sole discretion. •  Performance is based on measurements and projections using standard IBM benchmarks in a controlled environment. The actual throughput or performance that any user will experience will vary depending upon many factors, including considerations such as the amount of multiprogramming in the user’s job stream, the I/O configuration, the storage configuration, and the workload processed. Therefore, no assurance can be given that an individual user will achieve results similar to those stated here.
  • 3. Agenda •  OpenJPA and EclipseLink •  JPA version comparisons •  OpenJPA to EclipseLink Migration •  High level concepts •  OpenJPA to EclipseLink Investigation •  Specific differences •  Migration Toolkit •  Summary •  Q & A 3
  • 5. 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 •  Moving forward… •  OpenJPA will continue to be supported in WebSphere for many, many years •  At least until JPA 2.0 is deprecated… •  Both WebSphere traditional and Liberty 5
  • 6. Multiple JPA Providers •  Do I have 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 features, you may need to change… •  Many of the JPA 2.1 features have corresponding OpenJPA proprietary solutions •  Apache OpenJPA (ie. JPA 2.0) is compatible with other Java EE 7 features •  Allows for an easier, more gradual JPA migration 6
  • 7. 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 7
  • 8. 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 8
  • 9. 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 9
  • 10. Feature Comparison Chart 10 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
  • 11. 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 11
  • 13. 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 13
  • 14. 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 automatically weaves/enhances Entities for both OpenJPA and EclipseLink •  Applications packaged with entities pre-enhanced by OpenJPA must be recompiled and repackaged •  Removes OpenJPA specific enhancement bytecode 14
  • 16. 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 16
  • 17. 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 17 Add @Transient
  • 18. 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 18 Missing setVersion method
  • 19. 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 19 Add no-arg constructor
  • 20. 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 20 Add @Transient
  • 21. @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: Add @javax.persistence.Column 21 Add @Column
  • 22. 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 22
  • 23. 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 23
  • 24. 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) 24
  • 26. 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 26
  • 28. Do you need to migrate? Best practice is to •  Use OpenJPA for your existing applications •  Use EclipseLink for your new applications But… If you need to migrate, we have tools to assist. 28
  • 29. An Overview of WebSphere Migration Tools A set of tools help you: - Migrate from third-party application servers to WebSphere Application Server - Migrate between versions of WebSphere Application Server - Migrate to WebSphere Application Server to the Cloud 29 Migration discovery Binaries analysis Source migration Config migration On-line tool that helps you •  Estimate the effort required to migrate your application to WebSphere Application Server from third-party application servers •  Select the IBM cloud platform suited to host your application and estimate migration to that platform Command-line analysis of application binaries that provides •  High level evaluation report showing the Java EE technologies your application uses •  Detailed analysis for migration between versions of WebSphere traditional, Liberty, and Liberty Core •  Cloud migration for instant runtimes differences •  Java EE 7 differences •  Cloud connectivity analysis Eclipse plugins that scans application source to provide •  High level evaluation report •  A line-by-line analysis of code changes required •  Detailed analysis for migrating from third-party applications servers •  Detailed analysis for migration between versions of WebSphere traditional, Liberty, and Liberty Core •  Java EE 7 differences •  Cloud migration for instant runtimes differences •  Cloud connectivity analysis Eclipse plugin that helps migrate server configuration •  From third-party application servers to WebSphere Application Server •  Between versions of WebSphere Application Server including WebSphere traditional to Liberty.
  • 30. How can the migration toolkit help? •  Scan for OpenJPA to EclipseLink differences •  The Eclipse-based, source scanning migration tool •  Contains 19 Java rules with 9 quick fixes •  Contains 5 XML rules with 2 quick fixes •  Focuses on annotated JPA applications •  Provides some configuration support •  The binary scanning tool •  Detects Entities enhanced for OpenJPA •  Contains 2 Java rules •  Contains 5 XML rules 30
  • 31. Where can I get the migration tools? •  http://wasdev.net 31 •  Eclipse Marketplace
  • 32. How do I use the Eclipse migration tool? Select Run > Analysis… to configure the JPA related rules. • Choose the OpenJPA to EclipseLink JPA Migration rule set if you are only interested in the JPA rules. 32
  • 33. How do I use the Eclipse migration tool? •  Select Run > Analysis to configure JPA related rules. •  Choose the WebSphere Application Server Version Migration rule set if you want to do more analysis. •  Select Java EE 7 as the target Java EE version •  Select JPA 33
  • 34. 34 See the code to change •  After running Analysis, use the Software Analyzer Results view to interpret the scan.
  • 35. 35 See the proposed fix before applying the change
  • 36. When you need more help 36 •  Each rule has help that you can view from the results or from the configuration dialog.
  • 37. 37 What can I expect? -- Java rules
  • 38. 38 What can I expect? -- XML rules Note: The rule Mapping files are not processed during OpenJPA to EclipseLink migration is a reminder that most of the rules are Java annotation rules. If define your Entities in mapping files rather than using JPA annotations, you will need to make manual mapping file changes.
  • 39. What if I don’t have source code? The binary scanner detects •  Enhanced Java code – only in the binary scanner •  the XML issues •  org.apache.openjpa packages in use 39
  • 40. How do I use the binary scanner? •  java -jar binaryAppScanner.jar --help 40
  • 42. Other 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 42
  • 43. Useful Links •  EclipseLink JPA provider for Liberty profile article https://developer.ibm.com/wasdev/blog/2014/05/28/ eclipselink-jpa-provider-liberty-profile/ •  EclipseLink Migration Wiki Page https://wiki.eclipse.org/EclipseLink/Examples/JPA/Migration/ OpenJPA 43
  • 44. Useful Links •  WebSphere Application Server Migration Toolkit •  wasdev.net download and links to the documentation •  https://developer.ibm.com/wasdev/downloads/#asset/tools-WebSphere_Application_Server_Migration_Toolkit •  Eclipse Marketplace •  https://marketplace.eclipse.org/content/ibm-websphere-application-server-migration-toolkit •  Migration Toolkit for Application Binaries •  wasdev.net download and links to the documentation •  https://developer.ibm.com/wasdev/downloads/#asset/tools-Migration_Toolkit_for_Application_Binaries 44
  • 45. Sampling of Related Sessions… •  PEJ-5296: Java EE 7 Overview –  Monday, 10:30am-11:30am, Mandalay Bay North, South Pacific Ballroom A •  PEJ-2876: Configuring WebSphere Application Server for Enterprise Messaging Needs –  Monday, 12:00pm-1:00pm, Mandalay Bay North, Islander Ballroom G •  PEJ-2139: Technical Deep Dive into IBM WebSphere Liberty –  Monday, 3:00pm-4:00pm, Mandalay Bay North, South Pacific Ballroom A •  PEJ-1603: IBM WebSphere Liberty in the Wild –  Tuesday, 1:15pm-2:15pm, Mandalay Bay North, South Pacific Ballroom A •  PEJ-6480: Don’t Wait! Developing Responsive Applications with Java EE 7 –  Tuesday, 1:15pm-2:15pm, Mandalay Bay North, Islander Ballroom G •  PEJ-1979: Hands-On with the IBM WebSphere Application Server Migration Toolkit (LAB) –  Tuesday, 01:15 PM - 02:15 PM, MGM Grand - Room 320 •  PEJ-2151: Agile Development Using Java EE 7 with WebSphere Liberty Profile (LAB) –  Wednesday, 8:30am-9:30am, MGM Grand Room 306 •  PEJ-1973: WAS Migration: Benefits, Planning, and Best Practices –  Wednesday, 12:00pm-1:00pm, Mandalay Bay North, South Pacific Ballroom A •  PEJ-1902: Migrate Java EE Applications to Cloud with Cloud Migration Toolkit –  Wednesday, 2:30pm-12:15pm, Mandalay Bay North, Islander Ballroom G •  PEJ-5303: OpenJPA and EclipseLink Usage Scenarios Explained –  Thursday, 11:30am-12:15pm, Mandalay Bay North, South Pacific Ballroom A 45 45
  • 46. Notices and Disclaimers 46 Copyright © 2016 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
  • 47. Notices and Disclaimers Con’t. 47 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 h erein 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, Aspera®, Bluemix, Blueworks Live, CICS, Clearcase, Cognos®, DOORS®, Emptoris®, Enterprise Document Management System™, FASP®, FileNet®, Global Business Services ®, Global Technology Services ®, IBM ExperienceOne™, IBM SmartCloud®, IBM Social Business®, Information on Demand, ILOG, Maximo®, MQIntegrator®, MQSeries®, Netcool®, OMEGAMON, OpenPower, PureAnalytics™, PureApplication®, pureCluster™, PureCoverage®, PureData®, PureExperience®, PureFlex®, pureQuery®, pureScale®, PureSystems®, QRadar®, Rational®, Rhapsody®, Smarter Commerce®, SoDA, SPSS, Sterling Commerce®, StoredIQ, Tealeaf®, Tivoli®, Trusteer®, Unica®, 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.
  • 48. Thank You Your Feedback is Important! Access the InterConnect 2016 Conference Attendee Portal to complete your session surveys from your smartphone, laptop or conference kiosk.
  • 50. 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) 50