Login com Primefaces JPA e Hibernate

Boa noite a todos. Estou implementando um sistema de login(primeira vez que faço um). Estou seguindo o modelo do site do primefaces.org. Gostaria de implementa-lo com dados vindos do banco de dados. Estou usando mysql e ja tem um banco criado. Alguem poderia me mostrar a sequencia do que tenho q fazer, por favor?

Esta é minha pagina de login:

<html xmlns="http://www.w3.org/1999/xhtml"  
        xmlns:h="http://java.sun.com/jsf/html"  
        xmlns:f="http://java.sun.com/jsf/core"  
        xmlns:p="http://primefaces.org/ui">  
      
        <h:head>  
      
        </h:head>  
          
        <h:body>  
          
     <h:form>           
    <h:outputLink value="javascript:void(0)" onclick="PF('dlg').show();" title="login">
        <p:graphicImage library="images" name="login.png" />
    </h:outputLink>
 
    <p:growl id="growl" sticky="true" showDetail="true" life="3000" />
 
    <p:dialog header="Login" widgetVar="dlg" resizable="false">
        <h:panelGrid columns="2" cellpadding="5">
            <h:outputLabel for="username" value="Username:" />
            <p:inputText id="username" value="#{userLoginView.username}" required="true" label="username" />
 
            <h:outputLabel for="password" value="Password:" />
            <p:password id="password" value="#{userLoginView.password}" required="true" label="password" />
 
            <f:facet name="footer">
                <p:commandButton value="Login" update="growl" actionListener="#{userLoginView.login}"
                                 oncomplete="handleLoginRequest(xhr, status, args)" />
            </f:facet> 
        </h:panelGrid>
    </p:dialog>
</h:form>
 
<script type="text/javascript">
    function handleLoginRequest(xhr, status, args) {
        if(args.validationFailed || !args.loggedIn) {
            PF('dlg').jq.effect("shake", {times:5}, 100);
        }
        else {
            PF('dlg').hide();
            $('#loginLink').fadeOut();
        }
    }
</script>      
        </h:body>  
    </html>  

Esta é a classe UsuariosBean:

[code]
@ManagedBean
public class UsuariosBean {

private Usuarios usuarios = new Usuarios();

public Usuarios getUsuarios() {
	return usuarios;
}

public void gravar() {
	System.out.println("Gravando autor " + this.usuarios.getNome());

	new DAO<Usuarios>(Usuarios.class).adiciona(this.usuarios);
}

}

Esta é a classe JPAUtil:

[code]
public class JPAUtil {

private static EntityManagerFactory emf = Persistence
		.createEntityManagerFactory("condominio");

public EntityManager getEntityManager() {
	return emf.createEntityManager();
}

public void close(EntityManager em) {
	em.close();
}

}

E esta a classe DAO:

public class DAO<T> {

	private final Class<T> classe;

	public DAO(Class<T> classe) {
		this.classe = classe;
	}

	public void adiciona(T t) {

		// consegue a entity manager
		EntityManager em = new JPAUtil().getEntityManager();

		// abre transacao
		em.getTransaction().begin();

		// persiste o objeto
		em.persist(t);

		// commita a transacao
		em.getTransaction().commit();

		// fecha a entity manager
		em.close();
	}

	public void remove(T t) {
		EntityManager em = new JPAUtil().getEntityManager();
		em.getTransaction().begin();

		em.remove(em.merge(t));

		em.getTransaction().commit();
		em.close();
	}

	public void atualiza(T t) {
		EntityManager em = new JPAUtil().getEntityManager();
		em.getTransaction().begin();

		em.merge(t);

		em.getTransaction().commit();
		em.close();
	}

	public List<T> listaTodos() {
		EntityManager em = new JPAUtil().getEntityManager();
		CriteriaQuery<T> query = em.getCriteriaBuilder().createQuery(classe);
		query.select(query.from(classe));

		List<T> lista = em.createQuery(query).getResultList();

		em.close();
		return lista;
	}

	public T buscaPorId(Integer usuariosId) {
		EntityManager em = new JPAUtil().getEntityManager();
		T instancia = em.find(classe,usuariosId);
		em.close();
		return instancia;
	}

	public int contaTodos() {
		EntityManager em = new JPAUtil().getEntityManager();
		long result = (Long) em.createQuery("select count(n) from usuarios n")
				.getSingleResult();
		em.close();

		return (int) result;
	}

	public List<T> listaTodosPaginada(int firstResult, int maxResults) {
		EntityManager em = new JPAUtil().getEntityManager();
		CriteriaQuery<T> query = em.getCriteriaBuilder().createQuery(classe);
		query.select(query.from(classe));

		List<T> lista = em.createQuery(query).setFirstResult(firstResult)
				.setMaxResults(maxResults).getResultList();

		em.close();
		return lista;
	}

}


Esta é a classe que recebe os dados do formulario:

@ManagedBean
public class UserLoginView {
	
	
	Session session = null;
     
    private String username;
     
    private String password;
 
    public String getUsername() {
        return username;
    }
 
    public void setUsername(String username) {
        this.username = username;
    }
 
    public String getPassword() {
        return password;
    }
 
    public void setPassword(String password) {
        this.password = password;
    }
   
    public void login(ActionEvent event) throws IOException {
        RequestContext context = RequestContext.getCurrentInstance();
        FacesMessage message = null;
        
        boolean loggedIn = false;
         
        if(username != null && username.equals("admin") && password != null && password.equals("admin")) {
            loggedIn = true;
            message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Welcome", username);
           FacesContext.getCurrentInstance().getExternalContext().redirect("painel.xhtml");
            
        } else {
            loggedIn = false;
            message = new FacesMessage(FacesMessage.SEVERITY_WARN, "Loggin Error", "Invalid credentials");
        }
         
        FacesContext.getCurrentInstance().addMessage(null, message);
        context.addCallbackParam("loggedIn", loggedIn);
    } 
    
   
}

E agora, pessoal, o que faço? pra onde vou??