Thanx for your explanation Juergen.
It seems clear to me that this behaviour is driven by transaction best practices. As I am not an expert in that domain, I will follow your recommandation.
The only case where the setRollbackOnly(false) seems useful for me is the one mentionned in my previous post. Use of creation method inside a batch. I think I can invoke the DAO directly from the batch instead of invoking a fine grained service. The only drawback is that I may have to duplicate code between my two services.
Thanx again for the clarification