EclipseLink is an open source persistence framework that includes EclipseLink JPA for object-relational mapping, EclipseLink MOXy for object-XML mapping, and other services. EclipseLink JPA is the reference implementation for JPA 2.0 and supports advanced features through extensions for areas like caching, locking, and stored procedures. These extensions allow for high performance and tunability across databases while leveraging underlying technologies.
1. Eclipse JPA
Gordon Yorke
EclipseLink Architecture Committee Member,
TopLink Core Technical Lead,
JPA 2.0 Expert Group Member
gordon.yorke@oracle.com
2. What you will learn
• Eclipse Persistence Services Project (EclipseLink)
Components
• Focus on EclipseLink JPA
JPA 2.0 RI status
EclipseLink Extensions
3. Eclipse Persistence Services
• Eclipse runtime project
Nicknamed “EclipseLink”
Latest version 1.0.2
• Comprehensive
EclipseLink JPA: Object-Relational
EclipseLink MOXy: Object-XML
EclipseLink SDO: Service Data Objects
EclipseLink DBWS: Database Web Services
EclipseLink EIS: Non-Relational using JCA
4. Tidbits
• First comprehensive open source persistence solution
• Based upon product with 12 years of commercial
usage
• Same code base that was used to create TopLink
Essentials
• Highly optimizable through precise configurations
• Great performance
5. EclipseLink JPA
• JPA 1.0 compliant implementation
• JPA 2.0 in development for RI
• Keep up to date at:
http://wiki.eclipse.org/EclipseLink/Development/JPA_2.0
• Any JDBC/SQL compliant database
Database specific support for Oracle, MySQL, Derby,
SQLServer, PostgreSQL et al.
• Extensible and pluggable
• plus many valuable advanced features
Caching, locking …
7. Extensions - Locking
• Data Locking policies
Optimistic: Numeric, Timestamp, All fields, Selected fields,
Changed field
Pessimistic
8. Extensions - Entity Caching
• Entity caching
L2 shared across transactions/users
Coordination in a clustered deployment
Can support 3rd party distributed cache.
• Application specific configuration
Caching: per Entity or per Persistence Unit
eclipselink.cache.shared(default|<entity>)
Cache Type and Size: Weak, Soft-Weak, Full
eclipselink.cache.type(default|<entity>)
Expiration/Invalidation
Time to live, Time of day, API
Coordination (cluster-messaging)
Messaging: JMS, RMI, RMI-IIOP, …
Mode: SYNC, SYNC+NEW, INVALIDATE, NONE
9. Performance and Tuning
• Highly configurable and tunable
Principle: minimize and optimize database calls
Enable application specific tuning
• Flexibility allows efficient business models and
relational schemas to be used
• Leverages underlying performance tuning features
Java, JDBC and the underlying database technology
Batch Reading, Batch Writing, Joined Reading, etc…
10. More Information
• www.eclipse.org/eclipselink
• Newsgroup: eclipse.technology.eclipselink
• Wiki: wiki.eclipse.org/EclipseLink
• Mailing Lists:
eclipselink-dev@eclipse.org
eclipselink-users@eclipse.org
• Blogs
Committer Team blog: eclipselink.blogspot.com