Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-users] updateObject - How do I get the numbers of rows that where changed


I agree it is not recommended and not nice to blindly try to update, but in
our case it will save a lot of lookups in the database.
Normally,we receive lots of updates from a different product and we need to
update our database each time.The  cases when those updates are not a real
update , but they are new objects are very rare.
and we cannot know in if they are or not a real update.
Using unitOfWork will still check the object exists in the database.

By "check the row-count yourself " do you mean just count the rows in the
table with a separate Query or 
once the transaction is commited I can get the information? 


James Sutherland wrote:
> 
> In general I would recommend using JPA or the UnitOfWork API, not
> writeObject/updateObject.  Especially with a ClientSession, as UnitOfWork
> is required with ClientSession, writeObject/updateObject should only be
> used with a DatabaseSession.
> 
> Using updateObject will just do the update, if the row does not exist it
> will just do nothing.  If you used optimistic locking in your object, the
> row count would be 0 and EclipseLink would throw an error.  Otherwise you
> could check the row-count yourself I suppose, but probably not a good idea
> to try updating something that does not exist.
> 
> 
> AnaTatavu wrote:
>> 
>> In 90% of the cases , we need to do an update not an insert.
>> Using writeObject is causing to many db round-trips, since we are almost
>> sure is an update , not an insert.
>> We still need to figure out , when the update didn't occurr, so we can do
>> an insert.
>> At the end of the next code, I will need to know if all the updates
>> succeeded(all the rows where found and they were updated).
>> 
>> 
>>       beginTransaction(cs);
>>                 for ( Object row : rowList )
>>                 {
>>                     if ( row != null )
>>                     {
>>                           Object query = cs.updateObject(row);
>>                     }
>>                 }
>>                 commitTransaction(cs);
>> In the eclipseLink doc is written:
>> The updateObject method updates existing objects in the database, but
>> does not perform the does-exist check before it attempts the update
>> operation. The updateObject is more efficient than the writeObject method
>> if you are certain that the object does exist in the database. If the
>> object does not exist, the database throws an exception when you execute
>> the updateObject method. 
>> (from http://wiki.eclipse.org/Using_Basic_Query_API_(ELUG))
>> I don't receive any exception in the case the object doesn't exists.
>> 
>> Thank you,
>> Ana
>> 
>> 
> 
> 

-- 
View this message in context: http://www.nabble.com/updateObject---How-do-I-get-the-numbers-of-rows-that-where-changed-tp25371193p25392548.html
Sent from the EclipseLink - Users mailing list archive at Nabble.com.



Back to the top