Como con cualquier otro framework es necesario configurarlo para su correcto funcionamiento. Ya hemos visto que se puede configurar usando los ficheros de mapeo o las anotaciones Mapeo de una Entidad. Sin embargo, aún quedan aspectos que debemos configurar como:
.hbm.xml
.
La forma de configurar hibernate es usando el fichero XML de configuración llamado hibernate.cfg.xml
. Este fichero deberemos guardarlo en el paquete raíz de nuestras clases Java, es decir fuera de cualquier paquete.Si estamos usando NetBeans deberá ser en la carpeta src
de nuestro proyecto.
La información que contiene es la siguiente:
El fichero tiene la siguiente estructura:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost/hibernate1</property> <property name="connection.username">hibernate1</property> <property name="connection.password">hibernate1</property> <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property> <property name="hibernate.show_sql">true</property> <mapping resource="ejemplo01/Profesor.hbm.xml"/> <mapping class="ejemplo01.Profesor"/> </session-factory> </hibernate-configuration>
Podemos ver que el fichero hibernate.cfg.xml
es un típico fichero xml.
<hibernate-configuration>
y se encuentra en la línea 3.<hibernate-configuration>
encontramos,en la línea 4, el tag <session-factory>
que contendrá la configuración de hibernate.<property>
name
contiene el nombre de la propiedad de configuración.<property>
define el valor de la propiedad de configuración.<mapping>
que se usa para indicarle a hibernate las clases que queremos usar desde hibernate.resource
contiene el nombre de un fichero .hbm.xml
asociada a la clase que queremos persistir. En nuestro caso del fichero Profesor.hbm.xml
.class
contiene la FQCN 1) de la clase que queremos persistir. En nuestro ejemplo será la clase ejemplo02.Usuario
.<mapping>
con el atributo resource
o class
.
En el fichero se ha incluido dos veces para indicar las dos posibilidades excluyentes.
DOCTYPE
del fichero hibernate.cfg.xml
antes de la versión 3.6 era 2) :
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
Así que no confundirlo al hacer algún copy-empastre desde algún tutorial de Internet de versiones anteriores.
Pasemos ahora a explicar en detalle los tag <property>
y <mapping>
.
El tag <property>
se usa para definir cada una de las propiedades de configuración 3) de hibernate.
Como ya hemos indicado consta del atributo name
con el nombre de la propiedad de configuración. Dentro del tag <property>
incluiremos el valor de dicha propiedad de configuración.
Volvamos ahora a ver las propiedades de configuración del fichero
<property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost/hibernate1</property> <property name="connection.username">hibernate1</property> <property name="connection.password">hibernate1</property> <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property> <property name="hibernate.show_sql">true</property>
Estas propiedades se usan para poder conectarse mediante JDBC a la base de datos.
Propiedad de configuración | Explicación |
---|---|
connection.driver_class | Contiene la FQCN del driver de la base de datos a usar. |
connection.url | La URL de conexión a la base de datos tal y como se usa en JDBC |
connection.username | El usuario de la base de datos |
connection.password | La contraseña de la base de datos |
dialect | El lenguaje de SQL que usará Hibernate contra la base de datos. Este parámetro es opcional ya que hibernate lo puede intentar deducir a partir de los datos de la conexión 4). Los posibles valores de esta propiedad de configuración son la FQCN de una clase Java que extienda de la clase org.hibernate.dialect.Dialect. La lista de dialectos que soporta hibernate se encuentra en el paquete org.hibernate.dialect. |
hibernate.show_sql | Propiedad opcional que indica si se mostrará por la consola la SQL que lanza Hibernate contra la base de datos. Su posibles valores son true o false . Esta propiedad es muy útil mientras programamos ya que nos ayudará a entender cómo está funcionanado Hibernate |
connection.datasource | Indica el nombre del DataSource con el que se conectará Hibernate a la base de datos. En caso de estar esta propiedad no debería estar ninguna de las 4 primeras propiedades sobre la conexión o viceversa. Esta propiedad se usa en aplicaciones Web ya que los datos de la conexión se definen en el servidor de aplicaciones y se accede a la base de datos a través del DataSource . |
connection.datasource
recuerda que antes del nombre que se le haya dado al datasource hay que añadir:java:/comp/env/
Es decir que si nuestro datasource se llama jdbc/hibernate1
el valor de connection.datasource
deberá ser:
java:/comp/env/jdbc/hibernate1
El tag <mapping>
se usa para indicarle a Hibernate las clases queremos mapear. Este tag se usa de 2 formas distintas:
Si hemos creado un fichero de mapeo .hbm.xml
para poder persistir una clase Java a la base de datos , deberemos utilizar el atributo resource
en el tag <mapping>
.
<mapping resource="ejemplo01/Profesor.hbm.xml"/>
El atributo resource
contiene el path dentro de los paquetes Java al fichero .hbm.xml
.
Si la clase Java la hemos anotado para poder persistirla en vez de usar el fichero .hbm.xml
deberemos utilizar el atributo class
en el tag <mapping>
.
<mapping class="ejemplo01.Profesor"/>
El atributo class
contiene la FQCN de la clase Java que deseamos que se pueda persistir.