Anyplace the persistence code needs to commit to the database, we need to create a new transaction and rollback if the code fails.
we now use nested transactions and rollbacks in our persistence layer.