viernes, 17 de abril de 2009

JPA (JAVA PERSISTENCE API)

Hola gente , en la entrada de hoy voy hablar de JPA, para los que no sepan lo que es ,a grandes rasgos ,son unas APIS de java para tratar la base de datos como objetos mediante clases PERSISTENTES.

JPA te permite crear clases persistentes(Clase que sirven para almacenar datos , conviertiendose en tablas en la base de datos) .JPA utiliza anotaciones un ejemplo de clase persistente sería:

@Entity
public class Usuario {
@Id
private String id;
private String name;
private String email;
}


Con las anotaciones @Entity estamos diciendo que esa clase es persistente y como tal se creara una tabla en la base de datos ,@Id sirve para marcar la clave primaria y se coloca encima del atributo en este caso el atributo id de la clase Entity sera la clave primaria.

Es importante tener un archivo persistence.xml en la carpeta WEB-INF de tu proyecto que es donde estara la configuracion de tu JPA.

Bien una vez que tenemos el archivo de configuracion y las clases persistentes ¿como hacer que la clase persistente termine como tabla en la BD? basicamente con este Codigo:

- Primero creamos un EntityManager que nos permita manipular y trabajar con los objeto Entity:


String UNIDAD_DE_PERSISTENCIA = “DOCSPU”;
EntityManagerFactory factory = Persistence.createEntityManagerFactory(UNIDAD_DE_PERSISTENCIA, System.getProperties());
em = factory.createEntityManager();

Como ves, el nombre que uso es “DOCSPU”, esto es porque asi lo tenemos definido en el fichero “persistence.xml”, asi sabe como recuperar las clases y propiedades que corresponden a esta unidad de persistencia. Si tu cambiaste el nombre en el XML, aqui deberias poner el que hayas usado.

Una vez creada la EntityManager, ya es muy simple, abrir una transaccion e incluso almacenar elementos (Entity) en la base de datos. Un ejemplo para insertar un “Usuario” podria ser:

em.getTransaction().begin();
Usuario u = new Usuario();
u.setId(100);
u.setName(”jose”);
u.setEmail(”notengo@gmail.com”);
em.persist(u);
em.flush();
em.getTransaction().commit();

Como observareis, hemos recuperado una transaccion (getTransaction), instanciado un objeto usuario, asignado valores a sus atributos, lo hemos “persistido” (almacenado) en la base de datos con “persist” y por ultimo un commit de la transaccion.Y aqui cierro la entrada de hoy , la proxima entrada hablar de como Consultar en JPA.