martes, 30 de octubre de 2012

CRUD Hibernate 3 con Sql Server 2008 en NetBeans - Parte II.- Desarrollo

Continuando con la Practica CRUD Hibernate 3 con Sql Server 2008 ahora vamos a realizar altas, bajas, cambios de una Base de Datos. 

  • Creando los Paquetes 

    Creamos un nuevo proyecto web llamado DVDStore debemos crear los paquetes:
    • bean
    • dao
    • util
    • vista
      En el paquete default crearemos los archivos de configuracion hibernate.cfg.xml y hibernate.reveng.xml tal como se crean en el post anterior. 
 En el paquete bean creamos los archivos que seran mapeados a la base de datos. sobre el paquete bean -> new -> Hibenate Mapping Files and POJOs from Database. con esto crearemos los archivo Actor.hbm.xml y Actor.java
En el paquete until creamos la clase HibenateUtil esta clase viene incluida en el Framework de Hibernate. 
new->HibernateUtil y le nombramos HibenateUtil
continuamos creando nuetra clase DAO(Data Access Object) la cual nos facilitara la manipulacion de los datos contenidos en la tabla. esta clase estara contenida en el paquete dao y la llamaremos ActorDao en esta clase tendremos los metodos. insert(), update(Actor actor),  find(String busqueda), find(int id) y delete(int id).
05 package dao;
06 
07 import bean.Actor;
08 import java.util.ArrayList;
09 import javax.swing.JOptionPane;
10 import org.hibernate.HibernateException;
11 import org.hibernate.Session;
12 import org.hibernate.SessionFactory;
13 import org.hibernate.Transaction;
14 import org.hibernate.cfg.Configuration;
15 import util.HibernateUtil;
16 
17 /**
18  *
19  * @author xm07689
20  */
21 public class ActorDao {
22 
23     public void insert(Actor actor) {
24         Session sess = null;
25         try {
26             SessionFactory factory = new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();
27             sess = factory.getCurrentSession();
28             Transaction tx = sess.beginTransaction();
29             sess.save(actor);
30             tx.commit();
31             JOptionPane.showMessageDialog(null, "Successfully data insert in database");
32         } catch (Exception e) {
33             JOptionPane.showMessageDialog(null, e.getMessage());
34         }
35     }
36 
37     public void update(Actor actor) {
38         Session sess = null;
39         try {
40             SessionFactory factory = new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();
41             sess = factory.getCurrentSession();
42             Transaction tx = sess.beginTransaction();
43             sess.update(actor);
44             tx.commit();
45             JOptionPane.showMessageDialog(null, "Successfully data update in database");
46         } catch (Exception e) {
47             JOptionPane.showMessageDialog(null, e.getMessage());
48         }
49     }
50 
51     public ArrayList<Actor> find(String busqueda) {
52         Session sess = null;
53         ArrayList<Actor> listAct;
54         SessionFactory factory = new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();
55         sess = factory.getCurrentSession();
56         Transaction tx = sess.beginTransaction();
57         if (busqueda.equals("")) {
58             listAct = (ArrayList<Actor>) sess.createQuery("from Actor").list();
59         } else {
60             listAct = (ArrayList<Actor>) sess.createQuery("from Actor where name='" + busqueda + "'").list();
61         }
62         return listAct;
63     }
64 
65     public Actor find(int id) {
66         Actor actor = null;
67         Session sess = null;
68         SessionFactory factory = new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();
69         sess = factory.getCurrentSession();
70         Transaction tx = sess.beginTransaction();
71         actor = (Actor) sess.createQuery("from Actor where actor_id=" + id).uniqueResult();
72 
73         return actor;
74     }
75 
76     public void delete(int id) {
77         try {
78             Session sess = null;
79             sess = HibernateUtil.getSessionFactory().openSession();
80             sess.beginTransaction();
81             Actor actor = (Actor) sess.createQuery("from Actor where actor_id=" + id).uniqueResult();
82             sess.delete(actor);
83             sess.getTransaction().commit();
84             sess.close();
85         } catch (HibernateException ie) {
86             JOptionPane.showMessageDialog(null, ie.getMessage());
87         }
88     }
89 }  

El ultimo paso es creal la vista asi que en este paquete creamos un nuevo JFrame Form este ya viene predefinido en los paqutes de Swing Gui Forms de Netbeans
new->JFrame Form lo llamaremos FrmActor.

el proyecto debe quedar de la siguente forma.
  
el paquete img es una carpeta que debemos crear para ir guardando las imagenes de los actores este proceso de guardado y se hace en la clase FrmActor. les dejo unas imagenes de como funciona el ejemplo y ademas les pondre el script de la base de datos y los fuentes del proyecto. espero les sirva de ejemplo.

                                                      cargando los datos......
Ventana Principal

Seleccionando un actor
cambiando la foto

Saludos y dejen sus cometarios.

3 comentarios:

Hola Alex acabo de publicar el codigo fuente.

Saludos.

sale un error:

coul not insert: [bean.Actor]

GRAVE: No se puede insertar un valor explícito en la columna de identidad de la tabla 'actor' cuando IDENTITY_INSERT es OFF.

Publicar un comentario