Chapter 5. Configuring Hibernate for JBoss Web Server

Hibernate Object/Relational Mapping (ORM) is an object-relational mapping framework that you can use to connect JBoss Web Server to Java database connectivity (JDBC) datasources. You can use Hibernate ORM with JBoss Web Server when you want to store your application data in a relational database.

5.1. Installing Hibernate ORM

You can install Hibernate ORM on all platforms that JBoss Web Server supports. You can obtain the Hibernate JAR files in either of two ways:

Note

In a future release, Red Hat will remove the Hibernate JAR files from jboss-web-server-X.X.x-maven-repository.zip. In the JBoss Web Server 5.7 release, Red Hat continues to provide Hibernate JAR files in jboss-web-server-5.7.0-maven-repository.zip, but Red Hat does not provide any further updates to these JAR files except for any possible security fixes.

In JBoss Web Server 5.7 and future versions, Red Hat will continue to provide and maintain Hibernate JAR files in the Red Hat hosted Maven repository at https://maven.repository.redhat.com/ga/.

Prerequisites

  • You have configured your project to use either of the following Maven repositories:

Procedure

  1. Depending on the Maven repository you want to use, get the Hibernate JAR files from either jboss-web-server-X.X.x-maven-repository.zip or https://maven.repository.redhat.com/ga/.
  2. Add the Hibernate JAR files to your deployment WAR file.

5.2. Configuring JDBC connection pools

Apache Tomcat provides a default connection pooling mechanism for JDBC datasources. You can configure JDBC connection pools by updating settings in the /META-INF/context.xml file for your JBoss Web Server deployment.

Procedure

  1. Open the /META-INF/context.xml file.
  2. Modify the JDBC connection pools that are available to applications.

    For example:

    <Context>
      <Resource
        name="jdbc/DsWebAppDB"
        auth="Container"
        type="javax.sql.DataSource"
        username="sa"
        password=""
        driverClassName="org.h2.Driver"
        url="jdbc:h2:mem:target/test/db/h2/hibernate"
        maxActive="8"
        maxIdle="4"/>
    </Context>

5.3. Configuring Hibernate connection properties

You can configure Hibernate to use JDBC connections from the Tomcat pool, by updating settings in the /WEB-INF/classes/META-INF/persistence.xml file for your JBoss Web Server deployment.

Note

If you want to use the Hibernate API directly, use a similar configuration to the hibernate.cfg.xml file.

Procedure

  1. Open the /WEB-INF/classes/META-INF/persistence.xml file.
  2. Configure Hibernate to consume connections from Tomcat.

    For example:

    <persistence version="1.0"
      xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
    
      <persistence-unit name="dswebapp">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <properties>
          <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect" />
          <property name="hibernate.connection.datasource" value="java:comp/env/jdbc/DsWebAppDB"/>
        </properties>
      </persistence-unit>
    </persistence>

5.4. Adding JDBC data sources

You can configure Tomcat to consume JDBC data sources, by updating settings in the /WEB-INF/web.xml file for your JBoss Web Server deployment.

Procedure

  1. Open the /WEB-INF/web.xml file.
  2. Configure JDBC datasources with the resource-env-ref element.

    For example:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
      http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    
     <resource-env-ref>
      <resource-env-ref-name>jdbc/DsWebAppDB</resource-env-ref-name>
      <resource-env-ref-type>javax.sql.DataSource</resource-env-ref-type>
     </resource-env-ref>
    </web-app>
    Note

    The preceding example uses a a jdbc/DsWebAppDB data source.