Consulta ao banco de dados, de JDBC para Hibernate

Galera, aqui na empresa estamos modificando nosso projeto, e uma das modificações está relacionada a persistência dos dados. Estamos mudando de JDBC para Hibernate, mas estou com uma certa dificuldade na consulta.
Como eu posso passar essa Query de JDBC para Hibernate?

[code]
public List<HashMap<String, Object>> listar_dados(String UF) {
conectar();

	String filtro = new String();

	if (UF.equalsIgnoreCase("BR")) {
		filtro = "";
	} else if (UF.equalsIgnoreCase("CO")) {
		filtro = " WHERE (UF ='GO' or UF ='DF' or UF ='MT' or UF ='MS')";
	} else if (UF.equalsIgnoreCase("S")) {
		filtro = " WHERE (UF ='RS' or UF ='SC' or UF ='PR')";
	} else if (UF.equalsIgnoreCase("SD")) {
		filtro = " WHERE (UF ='SP' or UF ='MG' or UF ='RJ' or UF ='ES')";
	} else if (UF.equalsIgnoreCase("N")) {
		filtro = " WHERE (UF ='AC' or UF ='AP' or UF ='AM' or UF ='PA' or UF ='RO' or UF ='RR' or UF ='TO')";
	} else if (UF.equalsIgnoreCase("NE")) {
		filtro = " WHERE (UF ='AL' or UF ='BA' or UF ='CE' or UF ='MA' or UF ='PB' or UF ='PE' or UF ='PI' or UF ='RN' or UF ='SE')";
	} else {
		filtro = " WHERE UF = '" + UF + "'";
	}
	List<HashMap<String, Object>> lista_dados = new ArrayList<HashMap<String, Object>>();
	try {

		statement = conexao
				.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
						ResultSet.CONCUR_READ_ONLY);			
		resultset = statement.executeQuery("SELECT ordem, tipo, sum(`2011`) as a2011, "
						+ "sum(`2012`) as a2012, sum(`2013`) as a2013, "
						+ "sum(`2014`) as a2014, sum(`2015`) as a2015  FROM planoconveniencia"
						+ filtro + " GROUP BY tipo ORDER BY ordem");			
		while (resultset.next()) {

			HashMap<String, Object> hashmap_dados = new HashMap<String, Object>();
			hashmap_dados.put("ordem", resultset.getString("ordem"));
			hashmap_dados.put("tipo", resultset.getString("tipo"));
			hashmap_dados.put("a2011", resultset.getDouble("a2011"));
			hashmap_dados.put("a2012", resultset.getDouble("a2012"));
			hashmap_dados.put("a2013", resultset.getDouble("a2013"));
			hashmap_dados.put("a2014", resultset.getDouble("a2014"));
			hashmap_dados.put("a2015", resultset.getDouble("a2015"));  
			lista_dados.add(hashmap_dados);
		}

	} catch (SQLException Banco) {
		JOptionPane.showMessageDialog(null,
				"Erro na manipulação de banco: " + Banco);
	}
	// JOptionPane.showMessageDialog(null, "Passou por aqui!");
	desconectar();
	return lista_dados;
}[/code]

Se quiser com criteria, dá uma olhada

    public List<HashMap<String, Object>> listar_dados(String UF) {  
            conectar();  
			Criteria criteria = sessao.createCriteria(ClasseDaConsulta.class);
            String filtro = new String();  
      
            if (UF.equalsIgnoreCase("BR")) {  
				//não adiciona nada
                filtro = "";  
            } else if (UF.equalsIgnoreCase("CO")) {  
				//usando criteria fica mais fácil. Deve ficar algo assim (não estou certo, pois to sem tempo pra testar
				criteria.add(Restrictions.in(UF, new String[]{"GO", "DF", "MT", "MS"});
                //filtro = " WHERE (UF ='GO' or UF ='DF' or UF ='MT' or UF ='MS')";  
            } else if (UF.equalsIgnoreCase("S")) {  
                filtro = " WHERE (UF ='RS' or UF ='SC' or UF ='PR')";  
            } else if (UF.equalsIgnoreCase("SD")) {  
                filtro = " WHERE (UF ='SP' or UF ='MG' or UF ='RJ' or UF ='ES')";  
            } else if (UF.equalsIgnoreCase("N")) {  
                filtro = " WHERE (UF ='AC' or UF ='AP' or UF ='AM' or UF ='PA' or UF ='RO' or UF ='RR' or UF ='TO')";  
            } else if (UF.equalsIgnoreCase("NE")) {  
                filtro = " WHERE (UF ='AL' or UF ='BA' or UF ='CE' or UF ='MA' or UF ='PB' or UF ='PE' or UF ='PI' or UF ='RN' or UF ='SE')";  
            } else {  
                filtro = " WHERE UF = '" + UF + "'";  
            }  
            List<HashMap<String, Object>> lista_dados = new ArrayList<HashMap<String, Object>>();  
            try {  
				//ao invés de tudo isto, bastaria
				return criteria.list();
                statement = conexao  
                        .createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,  
                                ResultSet.CONCUR_READ_ONLY);              
                resultset = statement.executeQuery("SELECT ordem, tipo, sum(`2011`) as a2011, "  
                                + "sum(`2012`) as a2012, sum(`2013`) as a2013, "  
                                + "sum(`2014`) as a2014, sum(`2015`) as a2015  FROM planoconveniencia"  
                                + filtro + " GROUP BY tipo ORDER BY ordem");              
                while (resultset.next()) {  
      
                    HashMap<String, Object> hashmap_dados = new HashMap<String, Object>();  
                    hashmap_dados.put("ordem", resultset.getString("ordem"));  
                    hashmap_dados.put("tipo", resultset.getString("tipo"));  
                    hashmap_dados.put("a2011", resultset.getDouble("a2011"));  
                    hashmap_dados.put("a2012", resultset.getDouble("a2012"));  
                    hashmap_dados.put("a2013", resultset.getDouble("a2013"));  
                    hashmap_dados.put("a2014", resultset.getDouble("a2014"));  
                    hashmap_dados.put("a2015", resultset.getDouble("a2015"));    
                    lista_dados.add(hashmap_dados);  
                }  
      
            } catch (SQLException Banco) {  
                JOptionPane.showMessageDialog(null,  
                        "Erro na manipulação de banco: " + Banco);  
            }  
            // JOptionPane.showMessageDialog(null, "Passou por aqui!");  
            desconectar();  
            return lista_dados;  
        }  

Deve ficar assim, como disse, não posso testar agora.

Opa, brigadão cara, vou testar aqui.
Aproveitando o embalo, no caso dessa consulta aqui, bastaria utilizar criteria igual no código de cima?

[code]public List listar_tipologia() {
conectar();

	List lista_dados = new ArrayList();
	DateFormat formataData = new SimpleDateFormat("dd/MMM/yyyy");
	try {

		statement = conexao
				.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
						ResultSet.CONCUR_READ_ONLY);
		resultset = statement.executeQuery(" SELECT inauguracao.tipologia, Count(inauguracao.nome) AS qtd FROM inauguracao WHERE " +
				"inauguracao.tipologia <>  ' ' AND inauguracao.dia >=  '2011-01-01' AND inauguracao.dia <=  now() GROUP BY " +
				"inauguracao.tipologia ORDER BY qtd DESC");
		while (resultset.next()) {

			HashMap hashmap_dados = new HashMap();
			//String dia = formataData.format(resultset.getDate("dia"));			
			hashmap_dados.put("tipologia", resultset.getString("tipologia"));
			hashmap_dados.put("qtd", resultset.getString("qtd"));
			lista_dados.add(hashmap_dados);
		}

	} catch (SQLException Banco) {
		JOptionPane.showMessageDialog(null,
				"Erro na manipulação de banco: " + Banco);
	}
	desconectar();
	return lista_dados;
}[/code]

[quote=Firej]Opa, brigadão cara, vou testar aqui.
Aproveitando o embalo, no caso dessa consulta aqui, bastaria utilizar criteria igual no código de cima?

[code]public List listar_tipologia() {
conectar();

	List lista_dados = new ArrayList();
	DateFormat formataData = new SimpleDateFormat("dd/MMM/yyyy");
	try {

		statement = conexao
				.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
						ResultSet.CONCUR_READ_ONLY);
		resultset = statement.executeQuery(" SELECT inauguracao.tipologia, Count(inauguracao.nome) AS qtd FROM inauguracao WHERE " +
				"inauguracao.tipologia <>  ' ' AND inauguracao.dia >=  '2011-01-01' AND inauguracao.dia <=  now() GROUP BY " +
				"inauguracao.tipologia ORDER BY qtd DESC");
		while (resultset.next()) {

			HashMap hashmap_dados = new HashMap();
			//String dia = formataData.format(resultset.getDate("dia"));			
			hashmap_dados.put("tipologia", resultset.getString("tipologia"));
			hashmap_dados.put("qtd", resultset.getString("qtd"));
			lista_dados.add(hashmap_dados);
		}

	} catch (SQLException Banco) {
		JOptionPane.showMessageDialog(null,
				"Erro na manipulação de banco: " + Banco);
	}
	desconectar();
	return lista_dados;
}[/code][/quote]

Cada caso é um caso.
Naquele eu citei pela forma como estava.
Neste você terá que adaptar muitas coisas.
Talvez HQL seja mais simples…