It is normally much better to edit the managed objects directly and not use merge. Merge should only be used if you need to serialize objects to and from a remote client or web tier.
One thing
you should be careful on though is your object's version field if using optimistic locking. If you read the object in one transaction, and send it to a client or web tier, then update it in another transaction, then you need to ensure you set the version of the object to the original one read. Otherwise their is little point to locking.