Carlita

Just another Blog de ESPOL weblog

Consulta usando Hibernate

agosto9

Para realizar la consulta que genera un archivo xml con los datos almacenados en nuestra base de datos: Inicialmente, s

e siguen los mismos pasos indicados en la práctica, y recordemos que incluía ( 1 archivo de configuración, 1 archivo reverse engineer, 1 Util y los POJOS, en este caso uno, que es el mapeo de la tabla universidad)

  1. Luego en el servlet que agregamos, trabajamos ya directamente con la clase NewHibernateUtil, con la cual obtenemos el objeto sessionfactory, con el que crearemos una sentencia hql (hibernate query language), directamente con el objeto universidad, porque si revisamos un poquito, encontramos que hibernate nos permite mapear atributos de una base de datos relacional a un modelo orientado a objetos en nuestra aplicación.
  2. Para ello la sentencia será private static String QUERY=»from Universidad u»; la cual almacenamos en una constante de tipo String.
  3. Luego definimos un método para ejecutar esa sentencia, y le enviamos además un objeto PrinterWriter, el cual al final, nos permitirá escribir sobre el archivo xml a generar.

private void executeHQLQuery(String hql,PrintWriter out) {

try {

Session session = NewHibernateUtil.getSessionFactory().openSession();

session.beginTransaction();

Query q = session.createQuery(hql);

List resultList = q.list();

displayResult(resultList,out);

session.getTransaction().commit();

} catch (HibernateException he) {

he.printStackTrace();

}

}

Donde displayResults es: ya generar el archivo xml

private void displayResult(List resultList,PrintWriter out) {    out.println(«<?xml version=’1.0′ encoding=’iso-8859-1′?>»);

out.println(«<datos>»);

for (Object o : resultList) {

Universidad univ = (Universidad) o;

out.println(«<universidad>» +

«<codigo>»+univ.getCodigo()+»</codigo>» +

«<nombre>»+univ.getNombre()+»</nombre>» +

«<coordenadas>» +

«<latitud>» +univ.getLatitud()+»</latitud>» +

«<longitud>» +univ.getLongitud()+»</longitud>» +

«</coordenadas>» +

«<pais>» +univ.getPais()+»</pais>»+

«<url>» +univ.getUrl()+»</url>»+

«</universidad>»);

}

out.println(«</datos>»);    }

Observación: Usamos o especificamos encoding=’iso-8859-1′ para que nos permita el uso de tildes y ñ, pues de lo contrario nos da error usando la codificación UTF-8.

Y así en el processRequest del servlet, simplemente llamamos a un método runQuery

protected void processRequest(HttpServletRequest request, HttpServletResponse response)  throws ServletException, IOException {

response.setContentType(«text/xml»);

PrintWriter out = response.getWriter();

try{

runQuery(out);

}catch(Exception e){

out.println(e.getMessage());

out.close();

}

}

Donde runQuery es un método que simplemente llama al executeHQLQuery:

private void runQuery(PrintWriter out) {

executeHQLQuery(QUERY,out);

}

Importamos del paquete hibernate:

import org.hibernate.HibernateException;

import org.hibernate.Query;

import org.hibernate.Session;

Fuente: http://netbeans.org/kb/docs/java/hibernate-java-se.html#03c

Carla Salvatierra Arellano

posted under Grupo DAW

Email will not be published

Website example

Your Comment: