Hibernate , sem sql

Galera, estou com uma duvida.

Estou aprendendo usar o framework hibernate e trocando meus projetos atuais para usar com o hibernate,
mas alguns casos nao era pra ser usado SQL e eu acabei usando, podem me ajudar.
Qual a maneira de tirar o sql desse codigo e usar 100% hibernate.


public static List pessoasByName(String nome) {

		int status = 0;
		session = ConnectionFactoryHibernate.getInstance();
		// "ALEXANDRE FERREIRA"
		Query query = session.createQuery("from Pessoa where nome like '"+nome+"'");
		List lista = query.list();
		}
		if(lista.isEmpty()}
		{
		// %ALEXANDRE FERREIRA%
		query = session.createQuery("from Pessoa where nome like '%"+nome+"%'");
		lista = query.list();
		
		}
		
		session.close();//não sei se precisa...
		return lista;

uma vez eu li sobre o tal matchmode.anywhere, cara mais juro q to a dias tentando achar na documentacao e no google e nao encontro =/

Agradeco a atencao.!

Utilize a Criteria do Hibernate.
Com ela você não precisa usar expressões SQL. Neste seu exemplo, ficaria desta maneira :

Criteria criterios = session.createCriteria(ClasseParaConsulta.class);
criterios.add(Expression.like(?nome?, nome) );
criterios.list();

Pesquise na internet sobre Criteria no Hibernate.

Abraço.

Luis, obrigado lek…vou testar já…flw!
logo logo trago a resposta

Dois detalhes:

  1. Se você está utilizando o Hibernate 3.x, use Restrictions.like e não Expression.like no exemplo do Luis.
  2. Leia toda a documentação. É grande e chata na maior parte. Mas leia toda a documentação.

Lipe, não vi a diferenca nao…vc poderia ser mais claro?

Estou com outra duvida agora =/

Se eu passar o nome Alexandre Ferreira o metodo abaixo dava split nos " " e colocava and ou or dependendo do meu argumento e concatenava uma sql pra mim.

private static String arrayNomeSub(String nome, int sub, String orAnd) { String[] array_nome = nome.split(" "); String sql_aux = ""; for (int i = 0; i < array_nome.length; i++) { if (array_nome[i].length() > 3) { if (sub != 0) array_nome[i] = array_nome[i].substring(0, sub); sql_aux = sql_aux + " " + orAnd + " nome like '%" + array_nome[i] + "%'"; } } if (orAnd.equals("and")) return sql_aux.substring(18); return sql_aux.substring(17);

E depois eu usava ele neste metodo abaixo:

public static List pessoasByName(String nome) { query = session.createQuery("from Pessoa where nome like '%" + arrayNomeSub(nome, 3, "and")); lista = query.list(); return lista; }

Minha duvida é como eu faco para da um split nos espacos e colocar and ou or dependendo do caso?