Boa tarde pessoal,
Eu estou estudando a aposttila fj28 da caelum e empaquei numa parte, a partir da pagina 168 da apostila ela ensina como passar a responsabilidade das transações do hibernate para o spring, até ae tudo bem, criei as classes da maneira q a apostila pede mas empaquei na parte do DAO q ela pede para criar uma interface, bom segue abaixo o codigo da minha DAO atté onde consegui chegar:
@Component
public class HibernateUsuarioDAO {
public boolean existeUsuario(Usuario usuario) {
Usuario encontrado = (Usuario) session.createCriteria(Usuario.class)
.add(Restrictions.eq("login", usuario.getLogin()))
.uniqueResult();
return encontrado != null;
}
@Transactional
public void adiciona(Usuario usuario) {
session.save(usuario);
}
public Usuario carrega(Usuario usuario) {
return (Usuario) session.createCriteria(Usuario.class)
.add(Restrictions.eq("login", usuario.getLogin()))
.add(Restrictions.eq("senha", usuario.getSenha()))
.uniqueResult();
}
}
as sessions estão com erro pq nao sei como instanciar elas, acredito q seja através de um construtor mas como fazer este construtor?
minha classe construtora de sessions é esta como mostra na apostila:
public class CriadorDeSession implements ComponentFactory<Session> {
private final SessionFactory factory;
private final Proxifier proxifier;
private Session session;
public CriadorDeSession(SessionFactory factory, Proxifier proxifier) {
this.factory = factory;
this.proxifier = proxifier;
}
@PostConstruct
public void abre() {
this.session = proxifier.proxify(Session.class,
new MethodInvocation<Session>() {
public Object intercept(Session proxy, Method method, Object[] args, SuperMethod superMethod) {
Session sessionDoSpring = SessionFactoryUtils.doGetSession(factory, true);
return new Mirror().on(sessionDoSpring).invoke().method(method).withArgs(args);
}
});
}
public Session getInstance() {
return this.session;
}
@PreDestroy
public void fecha() {
this.session.close();
}
}
O quero aprender é como fazer a classe HibernateUsuarioDAO utilizar a session da classe CriadorDeSession?? alem disso a CriadorDeSession pede um parametro no construtor que é do tipo proxifier, onde eu consigo este parametro quando eu precisar informa-lo?