Hibernate uses automatic dirty checking, which means that all you
have to do is to commit your transaction. Hibernate will detect and save changes to the database automatically. A typical unit of work is like this:
1. begin transaction: tx = session.beginTransaction();
2. load some objects: obj = session.get(...);
3. update some properties: obj.setValue(...);
4. commit the transaction: tx.commit();
There are a few possible things that causes updates to not be written to the database. For example, a property mapped with update="false" or a collection mapped with inverse="true".
Things get more complex if you add long-running conversations, which uses different sessions for loading and committing. There is a good document about this on the Hibernate wiki:
http://www.hibernate.org/42.html
To help you with your problem it would be nice to see some code and mapping documents.