PDA

Ver la versión completa : Modificar la BD desde JSP



luis9rs
07-01-2010, 19:25
Hola tengo una duda sobre como modificar mi base de datos mysql desde mi pagina JSP. Estoy utilizando Hibernate y tengo más o menos claro como se modifica la base de datos desde una clase java normal. Sería algo asi:

Configuration conf= new Configuration();
conf.addClass(Articulo.class);
SessionFactory ses_Fact= conf.buildSessionFactory();
Session session = ses_Fact.openSession();
Articulo nuevo = new Articulo();
nuevo.setName("galletas");
nuevo.setId(007);
session.save(nuevo);
session.flush();
session.close();

Pero el problema me llega cuando quiero realizar esa consulta desde una pagina JSP, no se como aprovechar mi objeto 'session' para grabar los datos en la base de datos. Por ejemplo tendria el siguiente codigo JSP:

<%@page contentType="text/html" pageEncoding="UTF-8" import="accesos.Articulo" errorPage=""%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Consulta a la BASE DE DATOS</h1>
<%
Articulo nuevo = new Articulo();
nuevo.setName("galletas");
nuevo.setId(007);
%>

</body>
</html>


¿Alguien me puede decir las lineas de codigo que me faltan para poder modificar la base de datos desde mi JSP???
Gracias por adelantado!

luis9rs
08-01-2010, 13:55
Se me ocurrio una forma, pero me da un error y no se porque es. Tengo la clase java siguiente:
package accesos;


import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class principal {

public static Session ObtenerSesion()
{

Configuration conf= new Configuration();
conf.addClass(Articulo.class);
SessionFactory ses_Fact= conf.buildSessionFactory();
Session session = ses_Fact.openSession();

return session;

}
}

Y el JSP es:

<%@page contentType="text/html" pageEncoding="UTF-8"
import="accesos.Articulo" import="accesos.principal"
errorPage=""%>
<%@page import="org.hibernate.Session"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>

<h1>Consulta a la BASE DE DATOS</h1>
<%
Session misesion=principal.ObtenerSesion();
Articulo nuevo = new Articulo();
nuevo.setName("galletas");
out.println("El nombre del nuevo articulo es : "+nuevo.getName());
misesion.save(nuevo);
misesion.flush();
misesion.close();
%>

</body>
</html>

Pero me da el siguiente error:

org.hibernate.InvalidMappingException: Could not parse mapping document from resource accesos/Articulo.hbm.xml
org.hibernate.cfg.Configuration.addResource(Config uration.java:539)
org.hibernate.cfg.Configuration.addClass(Configura tion.java:586)
accesos.principal.ObtenerSesion(principal.java:28)
org.apache.jsp.index_jsp._jspService(index_jsp.jav a:73)
org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet .java:717)
org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet .java:717)

A alguien sabe que esta ocurriendo?

luis9rs
16-01-2010, 12:04
Ya lo solucione el problema anterior. Lo que ocurría era que tenia mal especificadas las opciones en el archivo de mapeo. Habia cerrado una etiqueta de dos formas distintas, por lo que estaba mal. Pero ahora parece ser q tengo otro error, y es q no me deja actualizar la base de datos porque debo estar inclumpliendo alguna restriccion, lo malo es q no se cual es. He marcado la opcion de Netbeans de mostrar sql, es decir, en el cfg, poner la linea <property name="hibernate.show_sql">true</property>, y no me sale nada nuevo en el error. El error es el siguiente:

org.hibernate.exception.GenericJDBCException: Could not execute JDBC batch update

clarinetista
16-01-2010, 19:05
Gracias por postear la respuesta, luis9rs.
Cierro el hilo