Working with Vaadin

Be transactional

Your business logic will be invoked only in the context of a Hibernate transaction, therefore anything that may modify the data should be transactional. 

Exception handling

If a constraint fails, it might be nice to show a friendly message to the user. By default, the user will see the error page, which is not really appealing.

Be aware that Automated Business logic exceptions are raised at commit time, not save time.  So, you must catch exceptions at that point.