So, if I understand you corrently, you want to selectively write changes to a few of the persistent objects, not to all of them? (Not sure why you'd need this but, here goes!)
Objects in Hibernate can exist in three pseudo-states (these are MY terms, not necessarily the Hibernate team's terms... it's just how I like to think of things!):
Transient - New objects that have never been persistent
Attached (Persistent) - Objects under hibernate management that are associated with a session
Detached - Objects that used to be under management but now are not (serialized across the wire or the Session has been closed).
What it sounds like you want to do is make updates to some of your objects, but not all. I can think of a couple ways to pull this off.
1) Assuming your operation can make use of multiple sesions, you can load the objects in one session and then end the session, which will detach your objects. Obtain a new session and selectively attach ONLY the objects you want to change. In your example, you'd only attach ObjC, not the other two. To attach an object, use Session.Update() or Session.Lock(ObjC, LockMode.READ). FYI, Session.Update does not actually force a SQL Write... it's more like "Update the persistent state of the object." It's almost "attach." Lots of folks think you have to call "Update" to save changes to attached objects in the database. You don't. It happens automatically when your session is "Flushed" by closing or a transaction commit.
2) If you're using one single session (for example a ThreadLocal or OpenSessionInView for a Web app) then there's a few easy ways to do it. The easiest way I can think of is to clone the objects you want to change, then update the clones. Then you can possibly re-attach the object to the session for updating. I haven't tested this but here's what you might do:
... Obtain Session
ClassA objA = (ClassA)session.load(ClassA, idA);
ClassB objB = (ClassB)session.load(ClassB, idB);
ClassA cloneA = objA.clone();
ClassB cloneB = objB.clone();
... Modify cloneA and cloneB ...
// now save the clone using the special saveOrUpdateCopy
objA = session.saveOrUpdateCopy(cloneA); // pretty sure this will work
Instead of saveOrUpdateCopy() you might try to session.lock(cloneA, LockMode.READ) but I think it will throw an exception since only one instance of a persistent object can be in the session at once. Dunno. Try it.
Go read the docs on saveOrUpdateCopy to see why I think that will work well with a clone. Here's the link:
http://www.hibernate.org/hib_docs/api/n ... ang.Object)