Caros, estou portanto/reescrevendo meu sistema que hoje é construído em PHP para JavaEE (Struts 2 + Hibernate). E estou maravilhado com as novas possibilidades!
Sou novo na programação Java para WEB, porem me viro em OO 
Minha dúvida é como abstrair mais a camada de persistência no qual eu utilizo o Hibernate 3.
Na action Struts tenho o seguinte código funcionando (com um DAO pobrinhu! :)):
public class UsuariosAction extends AbstractNucleoAction {
private static final long serialVersionUID = 1L;
private Usuario usuario;
private List<Usuario> usuarios;
public String listar() {
Session session = HibernateUtil.getSessionFactory().openSession();
UsuarioDAO usuarioDAO = new UsuarioDAO(session);
usuarios = usuarioDAO.list();
session.close();
return SUCCESS;
}
//...outros actions
}
Apesar de isto já estar funcionando algumas coisas me incomodam:
1 - Separação entre camadas action e persistência são fracas
2 - Necessidade de abrir sessions hibernate na camanda de ação (action). Isso me lembra mysql_connection do PHP :twisted: dentro do próprio PHP!!! Aff
Já vi uns tutoriais até do próprio Urubatan e o clássico do Apache Struts 2 - Struts 2 + Spring 2 + JPA + Ajax (http://struts.apache.org/2.1.8.1/docs/struts-2-spring-2-jpa-ajax.html)
Apesar de seguir o tutorial não consegui fazer funcionar o Spring 2, por questões de libs (já estou me vidando com o Maven2) 
Mas o que senti é que com o Spring gerenciando as transações e injetando dependências (classes services) os arquivos de configuração se multiplicaram e eu me perdi! :roll:
Apesar de se atrapalhar um pouco achei a implementação e principalmente a abstração.
Na minha visão:
Ponto positivo: Consegui a “separação” entre a camada de actions e persistência.
Ponto negativo: Muitos arquivos de configuração (como sou novo na área me acostumei mal com annotations). Na minha implementação atual uso apenas a configuração do hibernate.
Há alguma alternativa mais viável no sentido de “facilidade” entre o uso o Spring2 vs DAO na raça (genérico) abrindo session hibernate na camada action?
Desculpe se utilizei alguma “nomenclatura” errada, e por favor, me corrijam!
Abraços a todos!
