Nao sei se eh isso que vc esta perguntando mas a Criteria API do hibernate eh uma maneira de eliminar o SQL-like queries no seu codigo, por exemplo:
Se vc tem um um mapped object chamado Usuario e vc quer obter todos os usuarios que tem entre 20 e 30 anos de idade.
Usando um SQL comum ficaria algo do tipo :
from Usuario where idade >=:idade and idade <=:idade
usando criteria ficaria assim :
session.createCriteria(Usuario.class)
.add(Expression.between("idade", minIdade, maxIdade));
Mesma coisa agora ordenando:
session.createCriteria(Usuario.class)
.add(Expression.between("idade", minIdade, MaxIdade))
.addOrder( Order.desc("idade"));
Pra mim eh muito mais “elegante” e muito mais legivel e tb eh muito melhor quando vc tem a necessidade de criar queries dependendo das opcoes que o seu usuario selecionou no sistema, por exemplo.
Usando o exemplo que eu passei primeiro, se vc deixasse a escolha do usuario de selecionar ASC ou DESC, se vc fosse fazer isso do jeito tradicional vc teria que ficar concatenando strings e ficaria um codigo horrivel. Usando Criteria, ficaria algo assim:
Criteria criteria = session.createCriteria(Usuario.class);
criteria.add(Expression.between("idade", minIdade, MaxIdade));
if(orderByIdadeDesc)
criteria.addOrder( Order.desc("idade"));
else if (orderByIdadeAsc)
criteria.addOrder( Order.asc("idade"));
List users = criteria.list();
Este eh um exemplo “sacal” mas eu acho que exemplifica bem porque eh interessante o uso de Criteria.
Quanto a usar hibernate annotations com tomcat, meu conhecimento de hibernate eh muito limitado, mas eu acho que eh possivel sim por favor me corrijam se eh estiver errado.
//Daniel