Tutorial Hibernate iReport
-
Upload
octavio-anastasio-menocal-cordero -
Category
Documents
-
view
661 -
download
4
Transcript of 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.
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.
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
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 Conexión es exitosa.
Cuando hagan su reporte deben tener seleccionado el lenguaje HQL y una conexión Hibernate valida
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
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
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; }