Diferencia entre revisiones de «Practicas con Hibernate»

De Dos Ideas.
Saltar a: navegación, buscar
(Ver también)
Línea 1: Línea 1:
En este apartado mostraremos diferentes ejemplos de uso de hibernate, usando de prueba un proyecto [[Hibernate Annotations con Spring | con hibernate más spring]]
+
En este apartado mostraremos diferentes ejemplos de uso de hibernate, usando de prueba un proyecto [[Hibernate Annotations con Spring | con hibernate más spring]] que podemos descargar del repositorio [http://code.google.com/p/dosideas-aplicaciones-modelo/source/browse/#svn%2Fhibernate-sandbox%2Ftrunk de google]
  
 
== Cardinalidad entre entidades ==  
 
== Cardinalidad entre entidades ==  

Revisión del 17:14 15 mar 2012

En este apartado mostraremos diferentes ejemplos de uso de hibernate, usando de prueba un proyecto con hibernate más spring que podemos descargar del repositorio de google

Cardinalidad entre entidades

Uno a Uno

Entidades

Ej.: Un cuerpo esta compuesto por un corazón

Cuerpo @Entity @Table(name = "Cuerpo", schema = "UnoAUno") public class Cuerpo {

   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   @Column(name = "cuerpoId")
   private Long id;
   @Column(name = "cuerpoDescripcion")
   private String descripcion;
   
   @OneToOne(mappedBy = "cuerpo", cascade = CascadeType.ALL)
   private Corazon corazon;
  
   //Getter and Setter
   ...

}

Con la siguiente anotación decimos que el cuerpo posee una relación con la entidad corazón; y en la entidad corazón la relación esta dado por el atributo cuerpo. @OneToOne(mappedBy = "cuerpo", cascade = CascadeType.ALL) private Corazon corazon;

Corazón @Entity @Table(name = "Corazon", schema = "UnoAUno") public class Corazon {

   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   @Column(name = "corazonId")
   private Long id;
   @OneToOne(optional=false)
   @JoinColumn(
           name="cuerpoId", unique=true, nullable=false, updatable=false)
   private Cuerpo cuerpo;
   @Column(name = "corazonDescripcion")
   private String descripcion;
   //Getter and Setter
   ...

} Con la siguiente anotación decimos que el corazon esta relacionado uno a uno con el cuerpo y la existencia de este último es obligatoria (optional=false). Además, en caso de que este relacionado por una FK, definimos que el Join, lo realice utilizando la FK.

   @OneToOne(optional=false)
   @JoinColumn(
           name="cuerpoId", unique=true, nullable=false, updatable=false)
   private Cuerpo cuerpo;

DAO

CuerpoDao @Repository @Transactional public class CuerpoDaoImpl implements CuerpoDao {

   @Autowired
   private SessionFactory sessionFactory;
   
   public Cuerpo buscarPorId(Long id) {
       return (Cuerpo) sessionFactory.getCurrentSession().get(Cuerpo.class, id);
   }
   public void guardar(Cuerpo cuerpo) {
       sessionFactory.getCurrentSession().save(cuerpo);            
   }
   public void eliminar(Cuerpo cuerpo) {
       sessionFactory.getCurrentSession().delete(cuerpo);
   }

}

Ver también