interconnect 2016, openjpa and eclipselink usage scenarios (pej-5303)

50
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

Upload: kevin-sutter

Post on 06-Apr-2017

295 views

Category:

Software


3 download

TRANSCRIPT

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

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

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

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.

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

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

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

OpenJPA and EclipseLink

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

OpenJPA to EclipseLink Migration

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

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

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

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

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

OpenJPA to EclipseLink Investigation

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

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

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

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

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

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

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

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

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

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

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

@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

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

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

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

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

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

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

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

Summary

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

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

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

Migration Toolkit

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

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

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

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.

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

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

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

Where can I get the migration tools? •  http://wasdev.net

31

•  Eclipse Marketplace

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

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

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

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

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

34

See the code to change •  After running Analysis, use the Software Analyzer Results view to

interpret the scan.

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

35

See the proposed fix before applying the change

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

When you need more help

36

•  Each rule has help that you can view from the results or from the configuration dialog.

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

37

What can I expect? -- Java rules

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

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.

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

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

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

How do I use the binary scanner? •  java -jar binaryAppScanner.jar --help

40

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

Resources

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

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

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

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

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

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

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

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

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

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

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

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.

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

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.

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

Backup

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

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