utilizando SQL Server 2008 como manejador de Bases de datos, bueno sin mas rodeos vamos a iniciar con la configuracion.
Requisitos
Creando la Base de Datos
Para empezar debemos tener un esquema de una base da Datos, para ello crearemos una Base de Datos llamada DVDStore a la cual a gregaremos una tabla llamada actor.01 USE [DVDStore] 02 GO 03 04 CREATE TABLE [dbo].[actor]( 05 [actor_id] [int] IDENTITY(1,1) NOT NULL, 06 [name] [varchar](50) NULL, 07 [first_name] [varchar](50) NULL, 08 [last_name] [varchar](50) NULL, 09 [genero] [char](1) NULL, 10 [last_update] [datetime] NULL, 11 [photo] [varchar](50) NULL, 12 CONSTRAINT [PK_actor] PRIMARY KEY CLUSTERED ([actor_id] ASC )
Construyendo un nuevo Proyecto
En NetBeans creamos un nuevo proyecto Java Aplications.
Una vez creado en Proyecto agregamos las librerias de hibernate.
Ahora vamos a crear un nueva coneccion de Base de Datos.
en la pestaña de servicios damos click derecho sobre la opcion Bases de Datos.
Seleccionamos nueva coneccion.
En combobox Driver(controlador), seleccionamos nuevo controlador. aparecera una nueva ventana donde elegiremos el driver JDBC(sqljdbc4).
En el Combobox nos aparecera el nuevo driver agregado lo selecionamos y damos click en siguiente.
En esta ventana agregamos:
servidor: mi_servidor
puerto: 1433
Base de Datos:DVDStore
Instancia: sqlspress
Usuario: sa
Contraseña: *********
En nuestro Poyecto agregamos 3 paquetes:
- bean
- dao
- vista
- util
Crearemos un archivo de configuracion de hibernate, Nuevo-> otros->hibernate->Hibernate Configuration Wizard, se le dejaremos el nombre de default. Seleccionamos la coneccion que se creo anteriormente.
01 <?xml version="1.0" encoding="UTF-8"?> 02 <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration 03 DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 04 <hibernate-configuration> 05 <session-factory> 06 <property name="hibernate.connection.driver_class">com.microsoft.sqlserver. 07 jdbc.SQLServerDriver</property> 08 <property name="hibernate.connection.url">jdbc:sqlserver: 09 //DESARROLLOPC\SQLEXPRESS:1433;databaseName=DVDStore</property> 10 <property name="hibernate.connection.username">admin</property> 11 <property name="hibernate.connection.password">qwert12345</property> 12 <property name="hibernate.connection.pool_size">10</property> 13 <property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect< 14 /property> 15 <property name="hibernate.show_sql">true</property> 16 <property name="hibernate.current_session_context_class">thread</property> 17 <property name="hibernate.connection.autocommit">true</property> 18 <mapping resource="bean/Actor.hbm.xml"/> 19 </session-factory> 20 </hibernate-configuration>
A continuacion crearemos un nuevo archivo de Hibernate Reverse Engeering Wizard
Nuevo-> otros->hibernate->Hibernate Reverse Engeering Wizard
agregamos a las tablas que deseamos mapear.
01 <?xml version="1.0" encoding="UTF-8"?> 02 <!DOCTYPE hibernate-reverse-engineering PUBLIC "-//Hibernate/Hibernate 03 Reverse Engineering DTD 3.0//EN" "http://hibernate.sourceforge. 04 net/hibernate-reverse-engineering-3.0.dtd"> 05 <hibernate-reverse-engineering> 06 <schema-selection match-catalog="DVDStore" match-schema="dbo"/> 07 <table-filter match-name="actor"/> 08 </hibernate-reverse-engineering>
Sobre el paquete Bean creamos un nuevo Hibernate Mapping Files and POJOS from
Database nos va crear las clases Bean(POJOS)
mapeadas de las tablas que se agregaron al archivo Hibernate Reverse Engeering Wizard
En el paquete util creamos una nueva clase Hibernateutil Nuevo-> otros->hibernate->
HibernateUtil
En el paquete dao creamos una nueva clase llamada ActorDao el cual tendra un
metodo nos retornara un ArrayList de todos los Actores del la tabla actor y otro
metodo metodo para insertar un Actor
01 public class ActorDao { 02 03 public ArrayList<Actor> find() { 04 05 ArrayList<Actor> listAct; 06 Session sess = HibernateUtil.getSessionFactory().getCurrentSession(); 07 Transaction tx = sess.beginTransaction(); 08 listAct = (ArrayList<Actor>) sess.createQuery("from Actor").list(); 09 return listAct; 10 11 } 12 13 public void insert(Actor actor) { 14 Session sess = HibernateUtil.getSessionFactory().getCurrentSession(); 15 Transaction tx = sess.beginTransaction(); 16 sess.save(actor); 17 tx.commit(); 18 } 19 }
Ahora creamos un clase de prueba llamada TestStore donde primero insertamos un nuevo Actor y posteriormente imprimimos el nombre de todos los actores que estan en la base de datos.
01 public class TestStore { 02 03 public static void main(String[] args) { 04 ActorDao dao = new ActorDao(); 05 06 Actor newobj = new Actor(); 07 newobj.setFirstName("Joseph"); 08 newobj.setLastName("Rosa"); 09 newobj.setLastName("Alberth"); 10 newobj.setGenero('M'); 11 newobj.setLastUpdate(new Date()); 12 dao.insert(newobj); 13 14 ArrayList<Actor> listAct = dao.find(); 15 for (Actor actor : listAct) { 16 System.out.println(actor.getFirstName()); 17 } 18 } 19 }
El proyecto debe quedar de esta manera.
En el siguiente post Realizaremos un CRUD con hibernate y sql Server 2008 con NetBeans utilizando Java Swing.
porfavor dejen sus comentarios para ir mejorando los posts y se aceptan preguntas a cerca del tema.
Saludos.
7 comentarios:
Muy bueno, el post, solo que no se inserta en la bd
Sin ofender su gran aporte, por que es muy bueno pero en dao.insert(new obj); está insertando un objeto vació.
Hola +Gilberto SIMON BARRERA no se esta insertando un objeto vacio aqui la explicacion
//se crea la instancia del objeto Actor
Actor newobj = new Actor();
//se establecer los atributos a el objeto de la clase Actor
newobj.setFirstName("Joseph");
newobj.setLastName("Rosa");
newobj.setLastName("Alberth");
newobj.setGenero('M');
newobj.setLastUpdate(new Date());
//se llama el metodo insert de pasando como parametro el //objeto creado anteriormente
dao.insert(newobj);
Saludos.
Exelente el post , muy practico y justo.Pero me tira un error de mapeo , al parecer segui todo al pie de la letra pero me tira table is not mapped.
Mándame tu proyecto y lo reviso para ver porque manda ese error
excelente la ayuda hibernate brother la mejor que encontre hasta ahora
Publicar un comentario