JBoss.orgCommunity Documentation

Chapter 6. Using Teiid with Hibernate

6.1. Limitations
6.2. Configuration

For the most part, interacting with Teiid VDBs (Virtual Databases) from Hibernate is no different from working with any other type of data source.  First you must place Teiid JDBC API client JAR file and Teiid's hibernate dialect JAR in Hibernate’s classpath.  These files can be found in <jboss-install>/server/<profile>/lib directory.

These JAR files have the org.teiid.dialect.TeiidDialect and org.teiid.jdbc.TeiidDriver and org.teiid.jdbc.TeiidDataSource classes.

You then configure Hibernate (via hibernate.cfg.xml) as follows:

  1. Specify the Teiid driver class in the "connection.driver_class" property:

    <property name="connection.driver_class">
         org.teiid.jdbc.TeiidDriver
    </property>

  2. Specify the URL for the VDB in the "connection.url" property (replacing terms in angle brackets with the appropriate values):

    <property name="connection.url">
    	jdbc:teiid:<vdb-name>@mm://<host>:<port>;user=<user-name>;password=<password>
    </property>

    Note

    Be sure to use a Section 1.4.3, “Local JDBC Connection” if Hibernate is in the same VM as the application server.

  3. Specify the Teiid dialect class in the “dialect” property:

    <property name="dialect">
    	org.teiid.dialect.TeiidDialect
    </property>

    Alternatively, if you put your connection properties in hibernate.properties instead of hibernate.cfg.xml, they would look like this:

    hibernate.connection.driver_class=org.teiid.jdbc.TeiidDriver
    hibernate.connection.url=jdbc:teiid:<vdb-name>@mm://<host>:<port>
    hibernate.connection.username=<user-name>
    hibernate.connection.password=<password>
    hibernate.dialect=org.teiid.dialect.TeiidDialect

Note also that since your VDBs will likely contain multiple source and view models with identical table names, you will need to fully qualify table names specified in Hibernate mapping files:

<class name="<Class name>" table="<Source/view model name>.[<schema name>.]<Table name>">
	...
</class>