Listar somente 10 em 10 registros na tabela (paginação)!

Bom eu to fazendo uns teste no VRAPTOR + HIBERNATE. e to com a seguinte dúvida:
eu tenho

public List<T> listaTodos(){
return this.session.createCriteria(this.type).list();
}

me retorna uma tabela com todos os registros mais eu queria que retornace somente 10 registros, e um lick para ir passando de 10 em 10 ! em baixo o código.


eu tenho a classes Usuario.java

@Entity
public class Usuario {

@Id
@GeneratedValue
private Long id;
private String login;
private String senha;

//get set


**************************************************
tenho a classe logica Usuario.logic

@Component
@InterceptedBy({DaoInterceptor.class, AutorizadorInterceptor.class})
public class UsuarioLogic {

private final DaoFactory daoFactory;
private List<Usuario> usuarios;


public UsuarioLogic(DaoFactory daoFactory) {
this.daoFactory = daoFactory;
}

public void adiciona(Usuario usuario) {
this.daoFactory.beginTransaction();
this.daoFactory.getUsuarioDao().adiciona(usuario);
this.daoFactory.commit();
}

public void remove(Usuario usuario) {
this.daoFactory.beginTransaction();
this.daoFactory.getUsuarioDao().remove(usuario);
this.daoFactory.commit();
}

public void lista() {
usuarios = this.daoFactory.getUsuarioDao().listaTodos();
}

public void formulario() {

}

public List<Usuario> getUsuarios() { // AQUI FAZ VIM TODOS DE UMA VEZ
return usuarios;
}

}

/**********************************************************************
tenho o Dao


public class Dao<T> {

private final Session session;
private final Class type;

public Dao(Session session, Class type) {
this.session = session;
this.type = type;
}

protected Session getSession() {
return session;
}

public void adiciona(T usuario) {
this.session.save(usuario);
}

public void atualiza(T usuario) {
this.session.merge(usuario);
}

public void remove(T usuario) {
this.session.delete(usuario);
}

public List<T> listaTodos(){ // AQUI FAZ VIM TODOS DE UMA VEZ
return this.session.createCriteria(this.type).list();
}

public T procura(Long id) {
return (T) session.load(this.type, id);
}
}

[size=“11”][color=“red”]* Editado: Lembre-se de utilizar BBCode em seus códigos - Carneiro[/color][/size] :joia:

   public List<T> listaTodos(int primeiro, int qtde) {
	   Criteria c = this.session.createCriteria(this.type);
	   c.setFirstResult(primeiro);
	   c.setMaxResults(qtde);
	   return c.list();
   }

Se quizer fazer algo generico, tai uma ideia:

        interface Result<T> {
		List<T> list(int primeiro, int qtde);
	}

	abstract class CriteriaResult<T> implements Result<T> {
		public List<T> list(int primeiro, int qtde) {
			Criteria crit = createCrit();
			crit.setFirstResult(primeiro);
			crit.setMaxResults(qtde);
			return crit.list();
		}

		abstract Criteria createCrit();
	}

E ai criando o metodo:

	public <T> Result<T> listaTodos() {
		final Session s = this.session;
		final Object o = this.type;
		return new CriteriaResult<T>() {
			Criteria createCrit() {
				return s.createCriteria(o);
			}
		};
	}

E ai usando:

		Result<Object> r = listaTodos();
		r.list(0, 10);
		r.list(10, 10);
		r.list(20, 10);

Paginação+Web+Agilidade = DisplayTag

Não conseguir Fazer, mais é a primeira vez que faço isso, não conseguir implementar, estou usando VRaptor + Hibernate Anotação !

tentei das 2 formas, DisplayTag.

meu jsp


        
        <display:table id="usuario" name="${usuarios}" requestURI="usuario.lista.logic" class="its">
            
                <display:column property="id" sortable="true"  title="CÓDIGO"/>
                <display:column property="login" sortable="true"  title="LOGIN USUÁRIO" autolink="true"/>
                <display:column property="senha" sortable="true"  title="SENHA"/>
                <display:column>
                    
                <a><a href="usuario.remove.logic?usuario.id=${usuario.id}">[<img src="img/excluir.gif" title="Click para Remover o Usuário -> ${usuario.login}" id="fancy"/>  Remover </a>]</a>
                <a><---| . |---></a><a><---| . |---></a>
                <a href="usuario.editar.logic?usuario.id=${usuario.id}">[  Editar <img src="img/editar.gif" title="Click para Editar este o Usuário -> ${usuario.login}"  id="fancy"/></a>]
             </display:column>
        </display:table>
        
        
        
       
        <%@ include file="../rodape.jsp" %>
        </body>
</html>

Obrigado pela gentileza !