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

Difference between revisions of "EclipseLink/Examples/JPA/Migration/Hibernate/V3Annotations"

(Optimistic Locking)
(Optimistic Locking)
Line 34: Line 34:
 
|}
 
|}
  
Additionally EclipseLink provides support for comparing a specific set of selected columns using:
+
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.
 
+
@OptimisticLocking(type = OptimisticLockingType.SELECTED_COLUMNS)
+
  
 
=== Custom Sequence Generator ===
 
=== Custom Sequence Generator ===

Revision as of 14:51, 15 July 2008

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