Re: Selective commit

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Mon Jan 07 2008 - 10:23:13 EST

  • Next message: Álvaro Martínez: "Re: Selective commit"

    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