You will have to use a transaction aware resource (Datasource) in your UserDAO to insert that record in the database. Currently, you are using the connection in a auto-commit=true mode because of which the insert is not rolled back. Here's an extract from the Connection Javadoc:
Note: By default a Connection object is in auto-commit mode, which means that it automatically commits changes after executing each statement. If auto-commit mode has been disabled, the method commit must be called explicitly in order to commit changes; otherwise, database changes will not be saved.