You could just check this with database logging or the tools of the database itself. But no this is not true, only changed objects are committed even when you have a list that is mixed with changed and unchanged objects. How did you measure it did not seem very efficient and what did you compare it against? Is there any chance you have a lot of autocommitted objects, i.e. objects that were automatically committed because another object was committed that pointed to them in an association?