Tutorial Hibernate iReport

  • Published on
    16-Oct-2014

  • View
    619

  • Download
    4

Embed Size (px)

Transcript

Esto es para que puedan correr los reportes en HQL (Hibernate Query Language) q es ps, el lenguaje de hibernate Seleccionen Options

Luego, en la parte iReport, seleccionan la pestaa Classpath.

Si se fijan en los dos primeros JAR q estn agregados, son uno q dice jasperreportes-extensiones3.5.3.jar, este lo usa el iReport, a mi me apareci x defecto la 1 vez q abri esta onda, no se si a uds les va a salir tambin, sino busquen en esa direccin (claro, parecida a la que tienen en su compu). El otro jar es el driver de SQL, y ese lo tienen q agregar uds de donde lo tengan. Para agregarlo tienen q darle en el botn Add JAR, lo buscan y le dan agregar o aceptar. Ahora denle en el botn Add Folder.

Les va a salir este dialogo, uds tienen q agregar 2folders, 1. Donde tienen ubicado el archivo hibernate.cfg.xml 2. Dentro de su proyecto ay un folder build y dentro de ese est el folder classes; ese folder classes es el q necesitan agregar.

3.

Aqu estn las 4 direcciones q uds necesitan tener, la casilla Reloadable no c para q se ocupa pero si la tengo sin marcar me corre todo bien

Despues q tienen todo eso, van a crear la conexin Hibernate para iReport en el botn de la BD

Le dan New y en el siguiente dialogo seleccionan Hibernate connection, Next

Escriben el nombre que quieran, marcan la casilla Use Hibernate Annotations y le dan Test

Con todo lo q han hecho les tiene q salir q la Conexin es exitosa.

Cuando hagan su reporte deben tener seleccionado el lenguaje HQL y una conexin Hibernate valida

El cdigo para crear Usuario es este:

try { my.ejecutarConsulta("EXEC nuevoUsuario '" + nombre + "', '" + pass + "'"); } catch (Throwable ex) { JOptionPane.showMessageDialog(this, "El usuario " + nombre + " ya existe", "Mensaje de Error", JOptionPane.ERROR_MESSAGE);

pass = ""; return; }

Ese mtodo ejecutarConsulta est en una clase q tenemos q se llama MyHibernate, el objeto my es de esa clase y el cdigo de ese mtodo es este: public void ejecutarConsulta(String query) throws Throwable { Session s = factor.openSession(); s.beginTransaction().commit(); s.createSQLQuery(query).executeUpdate(); s.close(); } En esa consulta mando a ejecutar el procedimiento almacenado en SQL para crear usuario q recibe de parmetro el nombre y el password del usuario, este es el cdigo:create procedure [dbo].[nuevoUsuario] @user varchar(20), @pass varchar(10) as EXEC sp_addlogin @user,@pass,'Panaderia' EXEC sys.sp_addsrvrolemember @loginame = @user, @rolename = N'sysadmin' GO 'Panaderia' es mi BD

try { if (!newname.equals(oldname)) { my.ejecutarConsulta("ALTER LOGIN " + oldname + " WITH NAME = " + newname); } if (txtpass.getPassword().length != 0 && txtconfpass.getPassword().length != 0) { my.ejecutarConsulta("ALTER LOGIN " + newname + " WITH PASSWORD = '" + pass + "'"); } } catch (Throwable ex) { JOptionPane.showMessageDialog(this, "Para cambiar la contrasea debe escribir correctamente la anterior", "Mensaje de Error", JOptionPane.ERROR_MESSAGE); pass = ""; return; } Dentro del try ay unos condicionales, pero eso lo hago para ver si cambio el nombre o la password, o ambos, en caso q cambie le nombre, entra en el 1er condicional, si cambia la pass entra al 2do y va hacia el mismo metodo ejecutar Consulta, si se fijan no mando a ejecutar ningun procedimiento almacenado ni funcion ni nada de un solo hibernate ejecuta esa consulta.

Si quieren eliminar logins: try { my.ejecutarConsulta("EXEC deleteLogin '" + newname + "'"); } catch (Throwable ex) { JOptionPane.showMessageDialog(this, "El usuario " + newname + " no ha sido eliminado", "Mensaje de Advertencia", JOptionPane.WARNING_MESSAGE); return; } El cdigo SQL para el procedimiento deleteLogin es este:create procedure [dbo].[deleteLogin] @login varchar(20) as EXEC sp_droplogin @loginame = @login GO

Ya mae

Aqui esta el metodo q me pidieron: Le mandas el login kn el q keres entrar y su contrasea. No se si te acordas que con JDBC usbamos una clase llamada DriverManager .la clase DriverManagerConnectionProvider hace lo mismo que esa, le mandas unas Properties y obtenes un objeto del tipo Connection, que es esa variable con que esta en verde. Si el login o el password estn malos va a capturar una SQLException y asi vas a saber si se logueo bien o mal . public boolean verificar(String login, String pass) { boolean ok = false; Properties p = conf.getProperties(); p.setProperty("hibernate.connection.username", login); p.setProperty("hibernate.connection.password", pass); DriverManagerConnectionProvider d = new DriverManagerConnectionProvider(); d.configure(p); try { con = d.getConnection(); d.close(); ok = true; } catch (SQLException ex) { ok = false; } return ok; }