Hibernate, pesquisar uma String?

Boa tarde pessoal. Estou com uma dúvida pra pesquisar no banco por uma String, eu usei pra pesquisar por um inteiro assim Pessoa pessoa = (Pessoa) sessao.load(Pessoa.class, 1);, nesse caso ele pesquisa pela Id, gostaria de saber como que faço pra pesquisar pelo nome da Pessoa por exemplo.

Você pode usar Criteria.

List<Pessoa> pessoas = session.createCriteria(Pessoa.class)
					  .add(Restrictions.ilike("nome", "Fulano de tal", MatchMode.ANYWHERE)) //nome é o atributo do seu objeto Pessoa e ANYWHERE pede para pesquisar em qualquer parte do nome ignorando miúsculas e minúsculas.
					  .addOrder(Order.asc("nome")) //Retorna uma lista ordenada pelo nome das pessoas
					  .list();

vc pode usar Criteria ou HQL.

Com hql ficaria parecido com o seguinte codigo:


Query query = session.createQuery("select p from Pessoa where nome like :param1 ");
query.setString("param1", "Fulano de tal");
List pessoas = query.list();

Ou então se vc quizer uma estrutura genérica/dinâmica, vc pode olhar o meu projeto de Filter, no link abaixo:
http://www.guj.com.br/java/221618-filter-dinamico-para-hibernate

Com o meu projeto ficaria algo assim:

   Filter filter = FactoryFilter.createFilter("nome","Fulano de tal");          
   filter.addOrder(new Order("nome", Order.DESC));  

   List<Pessoa> pessoas = pessoaDAO.find(filter);  

ai se c vc quizer o mesmo filtro para uma classe chamada Cliente, ou qualquer outra quem tem a entidade nome seria usar do mesmo geito sem ter que criar na sua classe dao.

   Filter filter = FactoryFilter.createFilter("nome","Fulano de tal");          
   filter.addOrder(new Order("nome", Order.DESC));  

   List<Cliente> clientes = clienteDAO.find(filter);