I am using Hibernate (4.2.3) in a project for the first time. I am trying to get it to connect to an H2 embedded (local) DB and have the h2-1.3.173.jar
on the classpath as well as all the Hibernate JARs. I'm getting some disturbing error messages from Hibernate in my log output that make me wonder if I am not configuring Hibernate correctly. Here is the output I'm seeing in the logs:
604 [main] INFO org.hibernate.annotations.common.Version - HCANN000001: Hibernate Commons Annotations {4.0.2.Final}
707 [main] INFO org.hibernate.Version - HHH000412: Hibernate Core {4.2.3.Final}
769 [main] INFO org.hibernate.cfg.Environment - HHH000206: hibernate.properties not found
771 [main] INFO org.hibernate.cfg.Environment - HHH000021: Bytecode provider name : javassist
2192 [main] INFO org.hibernate.cfg.Configuration - HHH000043: Configuring from resource: hibernate.cfg.xml
2192 [main] INFO org.hibernate.cfg.Configuration - HHH000040: Configuration resource: hibernate.cfg.xml
2835 [main] INFO org.hibernate.cfg.Configuration - HHH000041: Configured SessionFactory: null
3313 [main] INFO org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl - HHH000402: Using Hibernate built-in connection pool (not for production use!)
3313 [main] WARN org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl - HHH000148: No JDBC Driver class was specified by property hibernate.connection.driver_class
3313 [main] INFO org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl - HHH000115: Hibernate connection pool size: 1
3313 [main] INFO org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl - HHH000006: Autocommit mode: false
And here is my hibernate.cfg.xml
file:
<?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>
<!-- DataSource & Connection info. -->
<property name="hibernate.dialect">org.hibernate.dialect.H2Dialect</property>
<property name="hibernate.connection.driver.class">org.h2.Driver</property>
<property name="hibernate.connection.url">jdbc:h2:file:/${MYAPP_HOME}/data/myapp_db</property>
<property name="hibernate.connection.username">myapp</property>
<property name="hibernate.connection.password">12345</property>
<property name="hibernate.connection.pool_size">1</property>
<!-- General Hibernate settings. -->
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="use_sql_comments">true</property>
<!-- DDL Mode. -->
<property name="hbm2ddl.auto">validate</property>
<!-- 2nd Level Cache. -->
<property name="hibernate.cache.region.factory_class">net.sf.ehcache.hibernate.EhCacheRegionFactory</property>
<!-- All our Hibernate mapping XML files. -->
<mapping class="net.myapp.common.dto.WordDTO" />
</session-factory>
</hibernate-configuration>
From the log output, I am concerned about several things:
- Configured SessionFactory: null
- Using Hibernate built-in connection pool (not for production use!)
- No JDBC Driver class was specified by property hibernate.connection.driver_class
- Autocommit mode: false
It does see that my connection pool size is 1, but I'm worried that this is a default value that Hibernate resorts to when it can't find/parse a hibernate.cfg.xml
file. Why is my SessionFactory null? Why is Hibernate using it's own built-in connection pool? Why can't it find my JDBC Driver class when h2-1.3.173.jar
is on the class path? What is "Autocommit mode" and why is it false?
Thanks in advance!