Archivos hbm en Hibernate
¿Qué son?
Los hbm son archivos de mapeo de hibernate. Son de tipo xml y representan a una clase y tabla determinada. Haremos un ejemplo para ilustrar esta explicación.
Vamos a lo práctico
Pensemos que queremos implementar una relación muchos a muchos con las siguientes tablas:
- Autobus (id, marca, antiguedad)
- Conductor (id, nombre, edad)
/src/hibernate.cfg.xml
<hibernate-configuration>
<session-factory>
...
<mapping resource="es/felipe/compañia/Conductor.hbm.xml" />
<mapping resource="es/felipe/compañia/Autobus.hbm.xml" />
</session-factory>
</hibernate-configuration>
Posteriormente creamos Conductor.hbm.xml. Mirando el código nos tendremos que dar cuenta de:
- Las Tablas: Se creará una tabla AUTOBUS_CONDUCTOR que relacionará la tabla AUTOBUS y la tabla CONDUCTOR.
- Los Objetos: Se relacionarán así: una colección de objetos de tipo Set en la clase Conductor, contendrá objetos Autobus. (Nota: Se ha usado un Set, pero podría haber sido cualquier otra coleccion de objetos).
/src/es/felipe/compañiaAutobus/conductor.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="es.felipe.compañia">
<class name="Conductor">
<id name="id" column="CONDUCTOR_ID">
<generator class="native"></generator>
</id>
<property name="nombre" />
<property name="edad" />
<set name="autobuses" table="AUTOBUS_CONDUCTOR">
<key column="CONDUCTOR_ID" />
<many-to-many column="AUTOBUS_ID"
class="Autobus" />
</set>
</class>
</hibernate-mapping>
Y ahora el código de autobus.hbm.xml, que representa sólo la tabla Autobus:
/src/es/felipe/compañiaAutobus/autobus.hbm.xm
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="es.felipe.compañia">
<class name="Autobus" table="AUTOBUS">
<id name="id" column="AUTOBUS_ID">
<generator class="native" />
</id>
<property name="antiguedad" />
<property name="marca" />
</class>
</hibernate-mapping>
Luego vienen las clases respectivas. Veamos que en la clase Conductor existe la propiedad del tipo Set, que será una colección de objetos Autobus.
/src/es/felipe/compañiaAutobus/conductor.java
public class Conductor {private Long id;
private String nombre;
private int edad;
private Set autobuses = new HashSet();
public Conductor(){}
public Long getId() {}
public void setId(Long id) {}
public String getNombre() {}
public void setNombre(String nombre) {}
public int getEdad() {}
public void setEdad(int edad) {}
public Set getAutobuses() {}
public void setAutobuses(Set autobuses) {}
}
/src/es/felipe/compañiaAutobus/autobus.java public class Autobus {
private Long id;
private int antiguedad;
private String marca;
public Autobus() {}
public Long getId() {}
private void setId(Long id) {}
public int getAntiguedad() {}
public void setAntiguedad(int antiguedad) {}
public String getMarca() {}
public void setMarca(String marca) {}
}
Espero que haya servido de ayuda y haya aclarado los conceptos, sobretodos a aquellos que empiezan con Hibernate.
Tweet
Publicar un comentario