Tutorial Hibernate iReport

12
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 pestaña Classpath.

Transcript of Tutorial Hibernate iReport

Page 1: Tutorial Hibernate iReport

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 pestaña Classpath.

Page 2: Tutorial Hibernate iReport

Si se fijan en los dos primeros JAR q están agregados, son uno q dice jasperreportes-extensiones-3.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 también, sino busquen en esa dirección (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 botón Add JAR, lo buscan y le dan agregar o aceptar.

Ahora denle en el botón Add Folder.

Les va a salir este dialogo, uds tienen q agregar 2folders,

1. Donde tienen ubicado el archivo hibernate.cfg.xml2. 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.

Page 3: Tutorial Hibernate iReport

Aquí están 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 conexión Hibernate para iReport en el botón de la BD

Page 4: Tutorial Hibernate iReport

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

Page 5: Tutorial Hibernate iReport

Con todo lo q han hecho les tiene q salir q la Conexión es exitosa.

Page 6: Tutorial Hibernate iReport

Cuando hagan su reporte deben tener seleccionado el lenguaje HQL y una conexión Hibernate valida

Page 7: Tutorial Hibernate iReport

El código 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 método ejecutarConsulta está en una clase q tenemos q se llama MyHibernate, el objeto my es de esa clase y el código de ese método 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 parámetro el nombre y el password del usuario, este es el código:

create procedure [dbo].[nuevoUsuario]@user varchar(20),@pass varchar(10)asEXEC sp_addlogin @user,@pass,'Panaderia'EXEC sys.sp_addsrvrolemember @loginame = @user, @rolename = N'sysadmin'GO

'Panaderia' es mi BD

Page 8: Tutorial Hibernate iReport

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 contraseña 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 código SQL para el procedimiento deleteLogin es este:

create procedure [dbo].[deleteLogin]@login varchar(20)asEXEC sp_droplogin @loginame = @login

GO

Ya mae

Page 9: Tutorial Hibernate iReport

Aqui esta el metodo q me pidieron:Le mandas el login kn el q keres entrar y su contraseña. No se si te acordas que con JDBC usábamos 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 están 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; }