hibernate.cfg.xml
includes the following configuration items that may
be modified to support other databases or application servers.
<!-- sql dialect --> <property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property> <property name="hibernate.cache.provider_class"> org.hibernate.cache.HashtableCacheProvider </property> <!-- DataSource properties (begin) --> <property name="hibernate.connection.datasource">java:comp/env/jdbc/JbpmDataSource</property> <!-- DataSource properties (end) --> <!-- JTA transaction properties (begin) --> <property name="hibernate.transaction.factory_class"> org.hibernate.transaction.JTATransactionFactory </property> <property name="hibernate.transaction.manager_lookup_class"> org.hibernate.transaction.JBossTransactionManagerLookup </property> <!-- JTA transaction properties (end) --> <!-- CMT transaction properties (begin) === <property name="hibernate.transaction.factory_class"> org.hibernate.transaction.CMTTransactionFactory </property> <property name="hibernate.transaction.manager_lookup_class"> org.hibernate.transaction.JBossTransactionManagerLookup </property> ==== CMT transaction properties (end) -->
You may replace the hibernate.dialect
with one that corresponds to your
database management system. The Hibernate reference guide enumerates the available database
dialects in section
3.4.1 SQL dialects.
HashtableCacheProvider
can be replaced with other
supported cache providers. Refer to section
19.2 The second level cache of the Hibernate manual for a list of the
supported cache providers.
The JBossTransactionManagerLookup
may be replaced with a strategy
appropriate to applications servers other than JBoss. See section
3.8.1 Transaction strategy configuration to find the lookup class that
corresponds to each application server.
Note that the JNDI name used in hibernate.connection.datasource
is, in fact, a resource manager reference, portable across application servers. Said
reference is meant to be bound to an actual data source in the target application server
at deployment time. In the included jboss.xml
descriptor, the reference is
bound to java:JbpmDS
.
Out of the box, jBPM is configured to use the JTATransactionFactory
.
If an existing transaction is underway, the JTA transaction factory uses it; otherwise it
creates a new transaction. The jBPM enterprise beans are configured to delegate transaction
management to the container. However, if you use the jBPM APIs in a context where no
transaction is active (say, in a web application), one will be started automatically.
If your own EJBs use container-managed transactions and you want to prevent unintended
transaction creations, you can switch to the CMTTransactionFactory
. With
that setting, Hibernate will always look for an existing transaction and will report a problem
if none is found.