A good data access layer implementation will do this for you. For example, Hibernate/NHibernate can defer flushing changes until the end of the transaction, or when you explicitly request changes to be flushed. Alternatively, you can fetch the data in one transaction and store changes in another, using optimistic locking. This avoids long database transactions.
If you're rolling your own access layer you can add batching to the JDBC connection to reduce the latency overhead of many small update/insert requests. Even so, I think this pattern is a good idea, since it gives a good overview of all the changes in one place. So you can then submit all your changes at once, quickly in a database transaction, rather than having writes to the db spread out over the duration of the business transaction - which could be a long time, and long long db transactions are generally not a good idea.
PreparedStatements are orthoganal to this pattern - they neither directly help or hinder. The pattern is about reducing network latency and having short transactions, as well as having an overview of all entity changes in a business operation.