Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
EclipseLink/UserGuide/JPA/Advanced JPA Development/NoSQL/Transactions
For current information, please see "Using EclipseLink with NoSQL Databases in the EclipseLink Solutions Guide: http://www.eclipse.org/eclipselink/documentation/latest/solutions/nonrelational_db.htm
EclipseLink JPA
EclipseLink | |
Website | |
Download | |
Community | |
Mailing List • Forums • IRC • mattermost | |
Issues | |
Open • Help Wanted • Bug Day | |
Contribute | |
Browse Source |
Transactions
The JPA transaction API is supported with NoSQL data-sources. Some NoSQL data-sources may not support transactions, so the level of transaction support is dependent on the NoSQL platform. JTA persistence units and transactions are also supported, but unless the NoSQL adapter is integrated with JTA, no XA or transaction support will be available.
If the NoSQL data-source does not support transactions, then any database change such as flush()
will be committed directly to the database, and rollback()
will not have any affect. A commit operation that fails will not roll back any successful changes written before the error. JPA normally does not write to the database until commit
or flush()
are called, so there will still be some level of transaction support offered by the persistence context.
JPA operations persist()
, merge()
, and remove()
are supported.
MongoDB - Transactions are not supported.
Oracle NoSQL - Transactions are not supported.
Locking
Locking support is dependent on the NoSQL platform. Some NoSQL platforms may offer support for optimistic version locking. Even if the NoSQL platform does not support locking an @Version
can still be used, and will at a minimum still be validated on merge()
operations.
MongoDB - Version locking is supported. Note that when a lock error occurs any previous successful writes will not be rolledback as transactions are not supported.
Oracle NoSQL - Locking is not supported.