[ 
https://issues.apache.org/jira/browse/JDO-589?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14046131#comment-14046131
 ] 

Craig L Russell commented on JDO-589:
-------------------------------------

Here is a proposal for handling both semantics.

Users could choose either NontransactionalWrite, Autocommit, or neither.

With NontransactionalWrite true: makePersistent and deletePersistent outside of 
a transaction would mark the objects as dirty and they would be committed in a 
subsequent transaction.

With Autocommit true: makePersistent would start a transaction, implement the 
persistence by reachability algorithm, and commit the transaction; similarly 
deletePersistent would start a transaction, delete the object, and commit the 
transaction.

With neither true: current behavior.

With both true: throw an exception when one of the flags is set while the other 
is set.

> Allow makePersistent outside a transaction
> ------------------------------------------
>
>                 Key: JDO-589
>                 URL: https://issues.apache.org/jira/browse/JDO-589
>             Project: JDO
>          Issue Type: New Feature
>          Components: api, specification, tck
>    Affects Versions: JDO 2 maintenance release 1 (2.1)
>            Reporter: Craig L Russell
>             Fix For: JDO 3.2
>
>
> JPA allows users to call makePersistent outside a transaction, and then when 
> beginning and committing a transaction, the instances are made persistent.
> This is similar to nontransactional dirty in which the managed instances can 
> be modified outside a transaction and then the changes committed within a 
> transaction.
> From the JPA spec, "When an EntityManager with an extended persistence 
> context is used, the persist, remove, merge, and refresh operations may be 
> called regardless of whether a transaction is active. The effects of these 
> operations will be committed to the database when the extended persistence 
> context is enlisted in a transaction and the transaction commits."
> This behavior should not be the default behavior (for backward compatibility 
> reasons if not the principle of least surprise) so it should be under control 
> of a PersistenceManager and PersistenceManagerFactory flag, perhaps 
> NontransactionalNew.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to