martes, 18 de noviembre de 2008

Primer Ejemplo con API de Persistencia (JEE)




Este es el primer ejemplo que se vio en clase usando el API de persistencia de Java, para iniciar creamos la base de datos en Mysql, el script es el siguiente;

CREATE DATABASE escuela;
USE escuela;

CREATE TABLE `alumnos` ( `clave` int(11) NOT NULL default '0', `nombre` varchar(20) default '0', `claveCarrera` varchar(45) NOT NULL, `paterno` varchar(45) NOT NULL, `materno` varchar(45) NOT NULL, PRIMARY KEY (`clave`), KEY `claveCarrera` (`claveCarrera`), CONSTRAINT `claveCarrera` FOREIGN KEY (`claveCarrera`) REFERENCES `carrera` (`claveCarrera`) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE `carrera` ( `claveCarrera` varchar(10) NOT NULL default '0', `nombreCarrera` varchar(20) default '0', PRIMARY KEY (`claveCarrera`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;


Ya que creamos la base de datos donde van a persistir nuestro datos, debemos ahora crear nuestro proyecto en Netbeans, para ello seguimos los pasos siguientes:

*Crear un nuevo Java Application


Damos un nombre al proyecto en este caso fue Ejemplop1, nos creara el proyecto y damos click derecho en la parte de de "Source Packages"


Nos abrira un asistente donde indicaremos la conexion a la base de datos. En la seccion "Database connection" seleccionamos -- New Database Connection -- , enseguida veremos una ventana en la cual seleccionaremos la pestaña "Basic Setting"



Los campos llevaran la siguiente informacion:



name: (seleccionamos) -- MySql(Connector/j driver) --

Driver: com.mysql.jdbc.Driver

Database URL: jdbc:mysql://127.0.0.1:3306/escuela

User name: root

Password: root

y Seleccionamos la casilla "Remember Password"


Damos en "OK" y se probara la conexion y si todo es correcto agregaremos las tablas d enuestra base de datos incluyendo las tablas relacionadas.


Y Damos click sobre el boton "Create persistence Unit"


Esto hara que se creen las clases en java que representan a las tablas de la base de datos, sobre las cuales trabajaremos.


Notese que estas clase tiene las anotaciones:


@entity
@table

@Query

@Entity


Que pertenecen al API de persistencia de Java. Bueno para entender mejor estas clases y sus anotaciones teniamos que haber leido la documentacion de API de persistencia:


http://java.sun.com/javaee/5/docs/tutorial/doc/bnbpy.html


Posteriormente a modo de ejemplo se creo un nuevo paquete en "Source Packages"y dentro de este una nueva clase llamada "Pruebap"


click derecho sobre "Source packages", new java class y le indicamos que estara dentro del paquete "prueba"Ya creada la clase agregaremos el siguiente codigo, (revisa los comentarios).




package prueba;



import ejemplop1.Carrera;


import java.util.List;


import javax.persistence.EntityManager;


import javax.persistence.EntityManagerFactory;


import javax.persistence.Persistence;


import javax.persistence.Query;



public class Pruebap {



public static void main(String arg[]){v

EntityManagerFactory emf = Persistence.createEntityManagerFactory


("JavaApplication2PU");


EntityManager em=emf.createEntityManager();


Carrera c=new Carrera();


c.setClaveCarrera("isc");


c.setNombreCarrera("Ing en Sistemas");


em.getTransaction().begin();


em.persist(c);


em.getTransaction().commit();



//actualizr


String x="isc";


c=(Carrera)em.find(Carrera.class,x);


c.setNombreCarrera("actualizada");


em.getTransaction().begin();


em.merge(c);


em.getTransaction().commit();



//eliminar


c=(Carrera)em.find(Carrera.class,x);


em.getTransaction().begin();


em.remove(c);


em.getTransaction().commit();



//buscar


c=(Carrera)em.find(Carrera.class,x);


System.out.println("Clave carrera"+c.getClaveCarrera());



//mostrar tdo



Query sql=em.createQuery("select c from carrera c");


List resultado=sql.getResultList();


for(int i=0;i menor resultado.size();i++){


c=(Carrera)resultado.get(i);


System.out.println("Clave"+c.getClaveCarrera());


System.out.println("Clave"+c.getNombreCarrera());


}


}


}

Ya creados estos metodos podemos ver como es que las consultas que realizamos se hacen contra al objeto de la clase Carrera que representa a la tabla carrera dela base de datos en MySql.

Ybueno hasta aqui hemos llegado en la clase que tuvimos le dia de hoy, posteriormente estare pasando los pauntes de la siguiente clase asi como ideas de como darle utilidad a esto con una interfaz (jsp, CRUD con JPA usando SWING ..etc)

Pueden descargar la carpeta del proyecto creado en NetBeans 6.1 en la siguiente pagina:

http://www.servicom.ar.vc/

Recuerden que ahi tambien pueden descargar las tareas del semestre asi como algunas cosas interesantes por ahi.....

1 comentario:

Ali dijo...

Muchas gracias por tu ejemplo. Como que despues de leerlo me cayo mas el 20 de como utilizar JPA. Intente abrir el ejemplo sin embargo no pude descargarlo.