[eluser]OverZealous[/eluser] @Alface Edit: removed rude comment - sorry, I just got up.
Validation is automatically run when you call save. This has nothing to do with the transaction status. Every time you call save(), you must check the result, for every object.
If validation fails, the save will not go through. The whole point of using transactions is that you can safely save multiple items, and if the last one fails, the DB will rollback all of the changes. In fact, you have to do it this way, because DMZ expects "existing" items to exist in the database, even ones just saved.
Finally, the transaction status is only useful in explaining when the database itself has been unable to save. If the failure was in the validation of your DMZ model, the transaction status will be TRUE, because no save query was processed.