@Override
    protected void action() {
        if (action == null) {
            throw new IllegalArgumentException("Indique a Ação que deve ser executada.");
        }

        if (persistenceController == null) {
            throw new IllegalArgumentException("Informe o dono do contexto de persistencia.");
        }

        EntityManager em = persistenceController.getPersistenceContext();
        if (em == null) {
            throw new IllegalArgumentException("Sem referencia para o gerenciador de persistencia.");
        }

        EntityTransaction tx = em.getTransaction();
        try {
            tx.begin();
            action.action();
            tx.commit();
        } catch (Exception ex) {
            if (tx.isActive()) {
                tx.rollback();
            }
            throw new RuntimeException(ex);
        }
    }