Using Hibernate with Tomcat

Posted by Unknown at 18:26
Using Hibernate with Tomcat

If you use Hibernate on Tomcat you don't have to use Tomcat's JNDI-bound JDBC connections. You can let Hibernate manage the JDBC connection pool. This works on all versions of Tomcat and is very easy to configure.
First, create a hibernate.cfg.xml or hibernate.propertiesfile, as per documentation (no, property names in cfg.xml don't have to be prefixed with ""):
<!DOCTYPE hibernate-configuration PUBLIC 
    "-//Hibernate/Hibernate Configuration DTD//EN"
        <!-- Settings for a local HSQL (testing) database. -->
        <property name="dialect">org.hibernate.dialect.HSQLDialect</property>
        <property name="connection.driver_class">org.hsqldb.jdbcDriver</property>
        <property name="connection.url">jdbc:hsqldb:hsql://localhost</property>
        <property name="connection.username">sa</property>
        <property name="connection.password"></property>
        <!-- Use the C3P0 connection pool. -->
        <property name="c3p0.min_size">3</property>
        <property name="c3p0.max_size">5</property>
        <property name="c3p0.timeout">1800</property>
        <!-- Disable second-level cache. -->
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
        <property name="cache.use_query_cache">false</property>
        <property name="cache.use_minimal_puts">false</property>
        <property name="max_fetch_depth">3</property>
        <!-- Print SQL to stdout. -->
        <property name="show_sql">true</property>
        <property name="format_sql">true</property>
        <!-- Drop and then re-create schema on SessionFactory build, for testing. -->
        <property name="">create</property>
        <!-- Bind the getCurrentSession() method to the thread. -->
        <property name="current_session_context_class">thread</property>
        <!-- Hibernate XML mapping files -->
        <mapping resource="org/MyClass.hbm.xml"/>
        <!-- Hibernate Annotations (and
        <mapping package="org.mypackage"/>
        <mapping class="org.MyClass/>
Now copy this file into your WEB-INF/classes directory of your web application. Copy hibernate3.jar into your WEB-INF/libdirectory and with it all required 3rd party libraries (see lib/README.txt in the Hibernate distribution). Don't forget to also copy your JDBC driver to common/libor WEB-INF/lib. Never ever copy anything in Tomcat into a global directory outside of your web application or you are in classloader hell!
Start Hibernate by building a SessionFactory, as shown here with HibernateUtil.
This listener initializes and closes Hibernate on deployment and undeployment, instead of the first user request hitting the application:
public class HibernateListener implements ServletContextListener {
    public void contextInitialized(ServletContextEvent event) {
        HibernateUtil.getSessionFactory(); // Just call the static initializer of that class    
    public void contextDestroyed(ServletContextEvent event) {
        HibernateUtil.getSessionFactory().close(); // Free all resources
Add it to your web.xml:

click the Below link download this file 

If you enjoyed this post and wish to be informed whenever a new post is published, then make sure you subscribe to my regular Email Updates. Subscribe Now!

Kindly Bookmark and Share it:



Have any question? Feel Free To Post Below:

Blog Archive


© 2011. All Rights Reserved | Interview Questions | Template by Blogger Widgets

Home | About | Top