cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Michael Lepine" <mikelep...@gmail.com>
Subject Re: creating/saving transient objects to database
Date Fri, 22 Jun 2007 13:18:15 GMT
Excellent. I will check this out.

Thanks to all for the replies/suggestions.


On 6/22/07, Michael Gentry <blacknext@gmail.com> wrote:
>
> We had something similar here where a batch job needed to read a data file
> and insert new records or update existing records (handle duplicates,
> essentially).  What we did was:
>
> * Read the data file, find the key data.
> * Write and call a getFoo(dataContext, keys) method.
> * The getFoo() method would query the database and if it found a record,
> it
> would return the Cayenne object to us.  If no record was found, it would
> create and register a new object in the DC and return the new object.
> * Then we'd apply all the data in the data file to the object return by
> getFoo().
> * Then dataContext.commitChanges().
> * Repeat until we processed all the data.
>
> Seemed to work pretty well and I think that approach would work for you,
> too, most likely.  In your case, your POJO is the equivalent of a record
> in
> our data file.  This also frees you up from having to care about the
> persistence state.  You don't care.  You have an object, apply the
> changes,
> commit.
>
> /dev/mrg
>
> PS. If relationships are involved, your getFoo() should create all the
> objects for all of the required relationships if you have to
> create/register
> new objects (when there was no DB match).  This way your main processing
> code can just apply changes blindly without having to check if the
> relationships exist.
>
>
> On 6/21/07, Michael Lepine <mikelepine@gmail.com> wrote:
> >
> > I've got a situation where I've got strict POJO objects that I'll need
> to
> > copy data from and into my generated Cayenne classes. My issue is that
> > when
> > I copy the data from the bean to the Cayenne class, I don't know whether
> > the
> > object exists or not. Thus, I create the Cayenne class instance using
> > DataContext.newObject(). Obviously, when I call
> DataContext.commitChanges
> > (),
> > an insert is being attempted on the corresponding table even if a record
> > already exists in the database.
> >
> > Is there a way to create the Cayenne instance so that the persistent
> layer
> > will know to check whether the record exists and update it instead of
> > always
> > attempting an insert?
> >
> > Any help and guidance are appreciated.
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message