Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

EclipseLink/Examples/JPA/Migration/Hibernate/V3Annotations

< EclipseLink‎ | Examples‎ | JPA‎ | Migration‎ | Hibernate
Revision as of 08:58, 3 November 2009 by Douglas.clarke.oracle.com (Talk | contribs) (Mapping Annotation)

This example catalogs the migration from Hibernate(TM) Annotations to EclipseLink JPA with its custom annotations. This is a work in progress so please feel free to add your comments or additional content. If you are trying to migrate from a Hibernate annotation that is not covered here please post a question to the EclipseLink newsgroup.

Entity Annotations

These annotations are configured on the entity class.

@org.hibernate.annotations.Entity

@org.hibernate.annotations.Entity(
		selectBeforeUpdate = true,
		dynamicInsert = true, dynamicUpdate = true,
		optimisticLock = OptimisticLockType.ALL,
		polymorphism = PolymorphismType.EXPLICIT)

Dynamic Insert/Update

By default EclipseLink will always insert all mapped columns and will only update the columns that have changed. If alternate operations are required then the queries used for these operations can be customized using API, SQL, or Stored Procedures.

Optimistic Locking

EclipseLink's optimistic locking functionality supports all of the Hibernate locking types and more. This table translated the locking types from Hibernate's @Entity(optimisticLock) attributes into the EclipseLink locking policies which can be configured with @OptimisticLocking or in EclipseLink's ORM.XML.

Hibernate's OptimisticLockType Description EclipseLink OptimisticLocking
NONE no optimistic locking EclipseLink defaults to no optimistic locking
VERSION use a column version JPA @Version

or EclipseLink @OptimisticLocking(type = OptimisticLockingType.VERSION_COLUMN)

DIRTY dirty columns are compared JPA @Version or EclipseLink @OptimisticLocking(type = OptimisticLockingType.CHANGED_COLUMNS)
ALL all columns are compared @OptimisticLocking(type = OptimisticLockingType.ALL_COLUMNS)

Additionally EclipseLink provides support for comparing a specific set of selected columns using OptimisticLockingType.SELECTED_COLUMNS. This approach allows you to select the critical columns that should be compared if the CHANGED or ALL strategies do not meet your needs.

Custom Sequence Generator

In Hibernate a custom generator for sequence values can be defined and used as:

   @Id
   @GeneratedValue(generator = "system-uuid")
   @GenericGenerator(name = "system-uuid", strategy = "mypackage.UUIDGenerator")
   public String getTransactionGuid()

With EclipseLink a custom sequence generator can be implemented and registered for use using the @GeneratedValue. See: How to use Custom Sequencing (ie. UUID) for more details.

Mapping Annotations

@Type

@ForeignKey

@Cache

Back to the top