{"id":73,"date":"2010-08-09T01:00:32","date_gmt":"2010-08-09T06:00:32","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/carlita\/?p=73"},"modified":"2010-09-29T20:27:42","modified_gmt":"2010-09-30T01:27:42","slug":"consulta-usando-hibernate","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/carlita\/2010\/08\/09\/consulta-usando-hibernate\/","title":{"rendered":"Consulta usando Hibernate"},"content":{"rendered":"<div><span style=\"font-size: x-small\"> <\/span><\/div>\n<p><span style=\"font-size: x-small\">Para realizar la consulta que genera un archivo xml con los datos\u00a0almacenados en nuestra base de datos:\u00a0Inicialmente, s<\/span><\/p>\n<div><span style=\"font-size: x-small\">e siguen los mismos pasos indicados en la pr\u00e1ctica, y recordemos que inclu\u00eda\u00a0( 1 archivo de configuraci\u00f3n, 1 archivo reverse engineer, 1 Util y los POJOS, en este caso uno, que es el mapeo de la tabla universidad)<span style=\"font-size: x-small\"> <\/span><\/span><\/div>\n<p><span style=\"font-size: x-small\"><span style=\"font-size: x-small\"> <\/span><\/span><\/p>\n<p style=\"text-align: left\">\n<ol>\n<li>\n<div style=\"text-align: left\">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\u00a0hql (hibernate query language), directamente con el objeto universidad, porque si revisamos un\u00a0poquito, encontramos que hibernate nos permite mapear atributos de una base de datos relacional a un modelo orientado a objetos en nuestra aplicaci\u00f3n.<\/div>\n<\/li>\n<li>\n<div style=\"text-align: left\">Para ello la sentencia\u00a0ser\u00e1 <span style=\"font-size: x-small\">private static String <strong>QUERY=\"from Universidad u\";<\/strong> la cual almacenamos en una constante de tipo String.<\/span><\/div>\n<\/li>\n<li>\n<div style=\"text-align: left\">Luego definimos un m\u00e9todo para ejecutar esa sentencia, y le enviamos adem\u00e1s un objeto PrinterWriter, el cual al final, nos permitir\u00e1 escribir sobre el archivo xml a generar.<\/div>\n<\/li>\n<\/ol>\n<p><span style=\"font-size: x-small\"> <\/span><\/p>\n<div><span style=\"font-size: x-small\">private <strong>void executeHQLQuery<\/strong>(String <strong>hql<\/strong>,PrintWriter <em>out<\/em>) { <\/span><\/div>\n<p><span style=\"font-size: x-small\"> <\/span><\/p>\n<div><span style=\"font-size: x-small\"> <\/span><\/div>\n<p><span style=\"font-size: x-small\"> <\/span><\/p>\n<p style=\"padding-left: 60px\">try {<\/p>\n<p style=\"padding-left: 60px\">Session session = <strong>NewHibernateUtil<\/strong>.getSessionFactory().openSession();<\/p>\n<p style=\"padding-left: 60px\">session.beginTransaction();<\/p>\n<p style=\"padding-left: 60px\">Query q = <strong>session.createQuery(hql);<\/strong><\/p>\n<p style=\"padding-left: 60px\">List resultList = q.list();<\/p>\n<p style=\"padding-left: 60px\">displayResult(resultList,out);<\/p>\n<p style=\"padding-left: 60px\">session.getTransaction().commit();<\/p>\n<p style=\"padding-left: 60px\">} catch (HibernateException he) {<\/p>\n<p style=\"padding-left: 60px\">he.printStackTrace();<\/p>\n<p style=\"padding-left: 60px\">}<\/p>\n<p style=\"padding-left: 60px\">}<\/p>\n<p style=\"padding-left: 60px\">Donde displayResults es: ya generar el archivo xml<\/p>\n<p style=\"padding-left: 60px\">private void <strong>displayResult<\/strong>(List resultList,<strong>PrintWriter out<\/strong>) {\u00a0\u00a0\u00a0\u00a0out.println(\"&lt;?xml version='1.0' <strong>encoding='iso-8859-1'<\/strong>?&gt;\");<\/p>\n<p style=\"padding-left: 60px\">out.println(\"&lt;datos&gt;\");<\/p>\n<p style=\"padding-left: 60px\">\n<p style=\"padding-left: 60px\">for (Object o : resultList) {<\/p>\n<p style=\"padding-left: 60px\">Universidad univ = (Universidad) o;<\/p>\n<p style=\"padding-left: 60px\">\n<p style=\"padding-left: 60px\">out.println(\"&lt;universidad&gt;\" +<\/p>\n<p style=\"padding-left: 60px\">\"&lt;codigo&gt;\"+univ.getCodigo()+\"&lt;\/codigo&gt;\" +<\/p>\n<p style=\"padding-left: 60px\">\"&lt;nombre&gt;\"+univ.getNombre()+\"&lt;\/nombre&gt;\" +<\/p>\n<p style=\"padding-left: 60px\">\"&lt;coordenadas&gt;\" +<\/p>\n<p style=\"padding-left: 60px\">\"&lt;latitud&gt;\" +univ.getLatitud()+\"&lt;\/latitud&gt;\" +<\/p>\n<p style=\"padding-left: 60px\">\"&lt;longitud&gt;\" +univ.getLongitud()+\"&lt;\/longitud&gt;\" +<\/p>\n<p style=\"padding-left: 60px\">\"&lt;\/coordenadas&gt;\" +<\/p>\n<p style=\"padding-left: 60px\">\"&lt;pais&gt;\" +univ.getPais()+\"&lt;\/pais&gt;\"+<\/p>\n<p style=\"padding-left: 60px\">\"&lt;url&gt;\" +univ.getUrl()+\"&lt;\/url&gt;\"+<\/p>\n<p style=\"padding-left: 60px\">\"&lt;\/universidad&gt;\");<\/p>\n<p style=\"padding-left: 60px\">}<\/p>\n<p style=\"padding-left: 60px\">out.println(\"&lt;\/datos&gt;\");\u00a0\u00a0\u00a0\u00a0}<\/p>\n<p style=\"padding-left: 60px\">\n<p style=\"padding-left: 30px\"><strong><em>Observaci\u00f3n:<\/em><\/strong> Usamos o especificamos <strong>encoding='iso-8859-1'<\/strong> para que nos permita el uso de tildes y \u00f1,\u00a0pues de lo contrario nos\u00a0da error usando\u00a0la codificaci\u00f3n UTF-8.<\/p>\n<p style=\"padding-left: 60px\"><span style=\"font-size: x-small\">Y as\u00ed en el processRequest del servlet, simplemente llamamos a un m\u00e9todo runQuery<\/span> <span lang=\"ES-MODERN\"> <\/span><\/p>\n<p><span lang=\"ES-MODERN\"> <\/span><\/p>\n<div><span lang=\"ES-MODERN\"> <\/span><\/div>\n<p><span lang=\"ES-MODERN\"> <\/span><\/p>\n<p style=\"padding-left: 60px\">protected void <strong>processRequest<\/strong>(HttpServletRequest request, HttpServletResponse <strong>response<\/strong>)\u00a0\u00a0throws ServletException, IOException {<\/p>\n<p style=\"padding-left: 60px\">\n<p style=\"padding-left: 60px\"><strong>response.setContentType(\"text\/xml\");<\/strong><\/p>\n<p style=\"padding-left: 60px\">PrintWriter <strong>out = response.getWriter();<\/strong><\/p>\n<p style=\"padding-left: 60px\">try{<\/p>\n<p style=\"padding-left: 60px\"><strong>runQuery(out);<\/strong><\/p>\n<p style=\"padding-left: 60px\">}catch(Exception e){<\/p>\n<p style=\"padding-left: 60px\">out.println(e.getMessage());<\/p>\n<p style=\"padding-left: 60px\">out.close();<\/p>\n<p style=\"padding-left: 60px\">}<\/p>\n<p style=\"padding-left: 60px\">\n<p style=\"padding-left: 60px\">}<\/p>\n<p>Donde runQuery es\u00a0un m\u00e9todo que simplemente llama al executeHQLQuery:<\/p>\n<div><span lang=\"ES-MODERN\"> <\/span><\/div>\n<p><span lang=\"ES-MODERN\"> <\/span><\/p>\n<p><span lang=\"ES-MODERN\"> <\/span><\/p>\n<p><span lang=\"ES-MODERN\"> <\/span><\/p>\n<p><span lang=\"ES-MODERN\"> <\/span><\/p>\n<div><span lang=\"ES-MODERN\"> <\/span><\/div>\n<p><span lang=\"ES-MODERN\"> <\/span><\/p>\n<p style=\"padding-left: 30px\">private void <strong>runQuery<\/strong>(PrintWriter <strong>out<\/strong>) {<\/p>\n<p style=\"padding-left: 30px\">executeHQLQuery(QUERY,out);<\/p>\n<p style=\"padding-left: 30px\">}<\/p>\n<p><span style=\"font-size: x-small\"> <\/span> Importamos del paquete hibernate:<\/p>\n<div><span lang=\"ES-MODERN\"> <\/span><\/div>\n<p><span lang=\"ES-MODERN\"> <\/span><\/p>\n<p><span lang=\"ES-MODERN\"> <\/span><\/p>\n<p><span lang=\"ES-MODERN\"> <\/span><\/p>\n<p><span lang=\"ES-MODERN\"> <\/span><\/p>\n<div><span lang=\"ES-MODERN\"> <\/span><\/div>\n<p><span lang=\"ES-MODERN\"> <\/span><\/p>\n<p style=\"padding-left: 30px\">import org.hibernate.HibernateException;<\/p>\n<p style=\"padding-left: 30px\">import org.hibernate.Query;<\/p>\n<p style=\"padding-left: 30px\">import org.hibernate.Session;<\/p>\n<div><span lang=\"ES-MODERN\"><strong>Fuente:<\/strong> http:\/\/netbeans.org\/kb\/docs\/java\/hibernate-java-se.html#03c <\/span><\/div>\n<p><span lang=\"ES-MODERN\">Carla Salvatierra Arellano<\/span><\/p>\n<p><span lang=\"ES-MODERN\"> <\/span><\/p>\n<p><span lang=\"ES-MODERN\"> <\/span><\/p>\n<p><span lang=\"ES-MODERN\"> <\/span><\/p>\n<div><span lang=\"ES-MODERN\"> <\/span><\/div>\n<p><span lang=\"ES-MODERN\"> <\/span><\/p>\n<div><span style=\"font-size: x-small\"> <\/span><\/div>\n<p><span style=\"font-size: x-small\"> <\/span><\/p>\n<p><span style=\"font-size: x-small\"> <\/span><\/p>\n<p><span style=\"font-size: x-small\"> <\/span><\/p>\n<p><span style=\"font-size: x-small\"> <\/span><\/p>\n<div><span style=\"font-size: x-small\"> <\/span><\/div>\n<p><span style=\"font-size: x-small\"> <\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Para realizar la consulta que genera un archivo xml con los datos\u00a0almacenados en nuestra base de datos:\u00a0Inicialmente, s e siguen los mismos pasos indicados en la pr\u00e1ctica, y recordemos que inclu\u00eda\u00a0( 1 archivo de configuraci\u00f3n, 1 archivo reverse engineer, 1 Util y los POJOS, en este caso uno, que es el mapeo de la tabla [&hellip;]<\/p>\n","protected":false},"author":3419,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[22794],"tags":[],"class_list":["post-73","post","type-post","status-publish","format-standard","hentry","category-grupo-daw"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/carlita\/wp-json\/wp\/v2\/posts\/73","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/carlita\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/carlita\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/carlita\/wp-json\/wp\/v2\/users\/3419"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/carlita\/wp-json\/wp\/v2\/comments?post=73"}],"version-history":[{"count":9,"href":"https:\/\/blog.espol.edu.ec\/carlita\/wp-json\/wp\/v2\/posts\/73\/revisions"}],"predecessor-version":[{"id":128,"href":"https:\/\/blog.espol.edu.ec\/carlita\/wp-json\/wp\/v2\/posts\/73\/revisions\/128"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/carlita\/wp-json\/wp\/v2\/media?parent=73"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/carlita\/wp-json\/wp\/v2\/categories?post=73"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/carlita\/wp-json\/wp\/v2\/tags?post=73"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}