add exception handling for DB transactions with rollback.
make db exceptions bubble up call stack and show alert in view
refactor controller factory method name to getController() following class name change