Yeah, I understood the hint :-)
On Jan 7, 2008, at 5:10 PM, Philip Miller wrote:
> That nudge should have been for rollbackChangesLocally() - CAY-716.
> Sorry Andrus.
>
>> -----Original Message-----
>> From: Philip Miller [mailto:philip.mille..bc.co.uk]
>> Sent: 07 January 2008 14:29
>> To: use..ayenne.apache.org
>> Subject: RE: Selective commit
>>
>> Nested data contexts may also help you to isolate atomic
>> changes to the object graph. Especially when the
>> commitChangesLocally() method is implemented (nudge ;). Check
>> out DataContext.createChildDataContext().
>>
>>
>>
>>> -----Original Message-----
>>> From: Andrus Adamchik [mailto:andru..bjectstyle.org]
>>> Sent: 07 January 2008 13:32
>>> To: use..ayenne.apache.org
>>> Subject: Re: Selective commit
>>>
>>> Hi Álvaro,
>>>
>>> It is hard to give a precise advice on multithreading
>> without knowing
>>> the nature of your application. So here is a few general notes:
>>>
>>> * DataContext instance is your isolated area for making in-memory
>>> changes to objects that will all be committed at once. So consider
>>> using multiple contexts as appropriate.
>>> Cayenne docs recommend various common patterns, such as DataContext
>>> per session (i.e. each user has a dedicated context),
>> DataContext per
>>> request, or DataContext per application (in a read-only
>> app). You can
>>> also devise your own approach, if none of the above fit your needs.
>>> All you need to know here is that multiple threads *reading* from a
>>> shared DataContext is ok, but multiple threads *writing* to
>> a shared
>>> DataContext is not ok.
>>>
>>> * In a rare case if you really need multiple threads to work off of
>>> the same context, consider using a dedicated nested DataContext for
>>> each atomic object modifications.
>>>
>>> Andrus
>>>
>>>
>>> On Jan 7, 2008, at 2:44 PM, Álvaro Martínez wrote:
>>>>
>>>> Hi, I've been working for a while with Cayenne but never
>> realized I
>>>> had a problem... until I got a weird exception.
>>>>
>>>> The fact is that I had been using context.newObject() and
>>>> context.commitChanges() to create new rows in the
>> database. But my
>>>> application works with many threads, so global commits
>> can (and in
>>>> fact do) interrupt normal creation of objects. Thread A and
>>> Thread B
>>>> are creating objects and filling their fields, but then B
>>> commits all
>>>> and A throws a validation exception because mandatory fields are
>>>> missing.
>>>>
>>>> How could I commit only one object?
>>>>
>>>> Thanks,
>>>>
>>>> Álvaro from Spain (Push the button Inc.)
>>>>
>>>>
>>>>
>>>
>>>
>>
>> http://www.bbc.co.uk/
>> This e-mail (and any attachments) is confidential and may
>> contain personal views which are not the views of the BBC
>> unless specifically stated.
>> If you have received it in error, please delete it from your system.
>> Do not use, copy or disclose the information in any way nor
>> act in reliance on it and notify the sender immediately.
>> Please note that the BBC monitors e-mails sent or received.
>> Further communication will signify your consent to this.
>>
>>
>
> http://www.bbc.co.uk/
> This e-mail (and any attachments) is confidential and may contain
> personal views which are not the views of the BBC unless
> specifically stated.
> If you have received it in error, please delete it from your system.
> Do not use, copy or disclose the information in any way nor act in
> reliance on it and notify the sender immediately.
> Please note that the BBC monitors e-mails sent or received.
> Further communication will signify your consent to this.
>
>
This archive was generated by hypermail 2.0.0 : Mon Jan 07 2008 - 10:23:45 EST