Hibernate + Spring Transaction no veraptor apostila fj28

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?

eu dei uma mexida na classe HibernateUsuarioDAO e ela nao apresenta mais erros porem ainda nao funciona e talvez eu saiba pq, desconfio q seja pq o SessionFactory e o Proxifier não estão recebendo valor nenhum, ou seja estão vazios, porem como atribuir algum valor a eles?? aproveitem e vejam se o q fiz na classe esta pelo menos meio certo. Obrigado

@Component
public class HibernateUsuarioDAO {
	private Session session;
	private SessionFactory factory;
	private Proxifier proxifier;
	
	public HibernateUsuarioDAO() {
		session = new CriadorDeSession(factory, proxifier).getInstance();
	}
	
	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();
	}
	
}

ninguem pra ajudar???

OII alguem pra ajudar??? Ainda nao consegui resolver o problema