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 14:51, 15 July 2008 by Douglas.clarke.oracle.com (Talk | contribs) (Optimistic Locking)

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 comment

Entity Annotations

@org.hibernate.annotations.Entity

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

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 Annotation

Back to the top