Let me give a simple example, if you have a function that saves fleets and another that save ships and there are links between the 2, i. e. , the ships have a fleet id and the fleet have ship ids and you have separate transactions, then if saved the fleet successfully but the ships save fails, it can cause problems. In that case, you could end up with your fleets pointing to ships that don't exist or vice versa. If they were all in the same transaction, you avoid that problem and they are all successful or fail as a group.