Nosotros hemos usado hasta ahora la API que permite la ejecución de operaciones directamente sobre bases de datos desde el lenguaje de programación Java (JDBC)
Ahora JPA se encarga de crear una capa de persistencia intermedia entre la aplicación y la base de datos.Hibernate Annotation implementa a este standard.
Trabaja con anotaciones.Usando:@Entity, @Column, @Id, @ManyToOne, @OneToOne,... etc.Estas siempre van en sus correspondientes clases persistentes:
-Para crear una de ellas se hace New/Annotation..
-La clase debe implementar Serializable.
-La clase debe de ser un POJO(Plain Old Java Object):constructor vacio o por defecto,solo Getters y Setters.Tal vez Equals and HashCode.Son solo clases contenedoras de datos y no de negocios por lo que no tienen mas que hacer.
Anotaciones minimas:
-@Entity: Se usa para la clase.
-@Id:Para los métodos.
-@GeneratedValue(Strategy=GT.Table):es el autoincrementar para la tabla correspondiente.
Anotaciones para hacer las relaciones de las tablas:
-@ManyToOne: Se situa delante del método "get" del objeto(Many) que posee la relación (ToOne) con la clase.Ejemplo:
@ManyToOne()
public Barrio getBarrio() {
return barrio;}
-@OneToMany:Se situa en el "get" de la lista que posee la clase(One) con la que tiene la relación (ToMany).Ejemplo:
@OneToMany(mappedBy = "barrio")
public List<Casa> getCasas() {
return casas;}
-@ManyToMany:Se situa en el "get" de la lista que posee la clase(Many) con la que tiene la relación (ToMany).Ejemplo:
@ManyToMany @JoinTable(name="CIUDAD_INMOBILIARIA", joinColumns= @JoinColumn(name="ciudad_id", referencedColumnName="id"), inverseJoinColumns= @JoinColumn(name="inmobiliaria_id", referencedColumnName="id")) public List <Inmobiliaria> getInmobiliarias() { return inmobiliarias; }
-@OneToOne:Se situa en el "get" de la lista que posee la clase(One) con la que tiene la relación (ToOne).A ambos lados de la relación deben estar anotados con @oneToOne
.@OneToOne(fetch=FetchType.LAZY,cascade={CascadeType.PERSIST,CascadeType.REMOVE},optional=false) private Direccion direccion; public Direccion getDireccion() {return direccion;} Creando EntityManagerFactory: Fábrica de conexiones a la base de datos.
// obtener una instancia de EntityManagerFactory usando la clase
// Persistence
// Como consejo debemos guardar la instancia de este factory para
// que no vuelva a ser creado con el objeto Persistence debido a que
// tiene un costo considerable de construcción
EntityManagerFactory factory = Persistence.createEntityManagerFactory("MyPersistenceUnitName");
// obtener una instancia de EntityManager del factory
EntityManager em = factory.createEntityManager();
EntityManager em = factory.createEntityManager();
// Inicio de transacción
em.getTransaction().begin();
em.getTransaction().begin();
//buscar objeto y persistirlo
Employee emp=em.find(Employee.class,id)
// Consulta para obtener todos los empleados que trabajan en una
// división de trabajo especificada y tienen un promedio de 40
// horas trabajadas a la semana
Query query = em.createQuery("SELECT e " +
" FROM Employee e " +
" WHERE e.division.name = 'Research' " +
" AND e.avgHours > 40");
// división de trabajo especificada y tienen un promedio de 40
// horas trabajadas a la semana
Query query = em.createQuery("SELECT e " +
" FROM Employee e " +
" WHERE e.division.name = 'Research' " +
" AND e.avgHours > 40");
// obtener una lista de resultados
List results = query.getResultList ();
//obtener un solo resultado
String nombre=query.getResult();
for (Object res : results) {
Employee emp = (Employee) res;
emp.setSalary(emp.getSalary() * 1.1);}
//Comprometer todos los cambios que han sido //detectados dentro de la transacción en el que se actualizarán todos los //objetospersistentes que hayamos modificado
em.getTransaction().commit();
// liberar los recursos
em.close();
Otros métodos del EntityManager:
//Hace un update
em.merge(emp);
//Hace un borrado
em.remove(emp)
//Es un commit poco a poco
em.flush( );
No hay comentarios:
Publicar un comentario