<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Thilms's Weblog</title>
	<atom:link href="http://thilms.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://thilms.wordpress.com</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Tue, 15 Jul 2008 07:03:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='thilms.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Thilms's Weblog</title>
		<link>http://thilms.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://thilms.wordpress.com/osd.xml" title="Thilms&#039;s Weblog" />
	<atom:link rel='hub' href='http://thilms.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Spring &#8211; Hibernate 3</title>
		<link>http://thilms.wordpress.com/2008/07/09/spring-and-hibernate-integration/</link>
		<comments>http://thilms.wordpress.com/2008/07/09/spring-and-hibernate-integration/#comments</comments>
		<pubDate>Wed, 09 Jul 2008 11:29:15 +0000</pubDate>
		<dc:creator>Senthilkumar</dc:creator>
				<category><![CDATA[Spring - Hibernate]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Hibernate]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[spring's]]></category>
		<category><![CDATA[thilms]]></category>
		<category><![CDATA[use hibernate in spring]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Spring and Hibernate Integration Spring can simplify your Hibernate application. Spring’s Hibernate integration uses the same generic transaction infrastructure and DAO exception hierarchy that it uses for JDBC, JDO, iBATIS, and TopLink, making it easy to mix and match persistence methodologies if necessary. There are two approaches to Spring’s Hibernate integration: Inversion of Control with [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thilms.wordpress.com&amp;blog=4180841&amp;post=1&amp;subd=thilms&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h1>Spring and Hibernate Integration</h1>
<p>Spring can simplify your Hibernate application. Spring’s Hibernate integration uses the same generic transaction infrastructure and DAO exception hierarchy that it uses for JDBC, JDO, iBATIS, and TopLink, making it easy to mix and match persistence methodologies if necessary.</p>
<p>There are two approaches to Spring’s Hibernate integration:</p>
<ol>
<li>Inversion of Control with a HibernateTemplate and Callback</li>
<li>Extending HibernateDaoSupport and Applying an AOP Interceptor</li>
</ol>
<p>The IoC/HibernateTemplate methodology feels a lot like the <tt>JdbcTemplate</tt> methodology described in the last section. For this example, I will show the HibernateDaoSupport/AOP Interceptor approach.</p>
<p>After you have written your standard Hibernate mappings, there basically three things that you need to do to use Spring’s <tt>HibernateDaoSupport</tt> to implement a DAO:</p>
<ol>
<li>Configure the Hibernate <tt>SessionFactory</tt></li>
<li>Extend your DAO Implementation from <tt>HibernateDaoSupport</tt></li>
<li>Wire in Transaction Support with AOP</li>
</ol>
<p>So let’s do another implementation of the <tt>WidgetDAO</tt> using Hibernate. First of all, here is our Hibernate XML mapping for the <tt>Widget</tt> class:</p>
<p> </p>
<p><span class="pun"><span style="color:#666600;">&lt;?</span></span><span class="pln">xml version</span><span class="pun"><span style="color:#666600;">=</span></span><span class="str"><span style="color:#008800;">&#8220;1.0&#8243;</span></span><span class="pun"><span style="color:#666600;">?&gt;</span></span><span class="pln"><br />
</span><span class="dec"><span style="color:#660066;">&lt;!DOCTYPE hibernate-mapping SYSTEM<br />
  &#8220;http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd&#8221;&gt;</span></span><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">hibernate-mapping</span></span><span class="pln"> </span><span class="atn"><span style="color:#660066;">package</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;com.zabada.springrecipes.model&#8221;</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln"><br />
  </span><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">class</span></span><span class="pln"> </span><span class="atn"><span style="color:#660066;">name</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;Widget&#8221;</span></span><span class="pln"> </span><span class="atn"><span style="color:#660066;">table</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;WIDGETS&#8221;</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln"><br />
    </span><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">id</span></span><span class="pln"> </span><span class="atn"><span style="color:#660066;">name</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;id&#8221;</span></span><span class="pln"> </span><span class="atn"><span style="color:#660066;">column</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;WIDGET_ID&#8221;</span></span><span class="pln"> </span><span class="atn"><span style="color:#660066;">type</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;long&#8221;</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln"><br />
      </span><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">generator</span></span><span class="pln"> </span><span class="atn"><span style="color:#660066;">class</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;native&#8221;</span></span><span class="pun"><span style="color:#666600;">/&gt;</span></span><span class="pun"><span style="color:#666600;">&lt;/</span></span><span class="tag"><span style="color:#000088;">id</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln"><br />
    </span><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">property</span></span><span class="pln"> </span><span class="atn"><span style="color:#660066;">name</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;name&#8221;</span></span><span class="pln"> </span><span class="atn"><span style="color:#660066;">column</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;NAME&#8221;</span></span><span class="pln"> </span><span class="atn"><span style="color:#660066;">type</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;string&#8221;</span></span><span class="pun"><span style="color:#666600;">/&gt;</span></span><span class="pln"><br />
    </span><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">property</span></span><span class="pln"> </span><span class="atn"><span style="color:#660066;">name</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;size&#8221;</span></span><span class="pln"> </span><span class="atn"><span style="color:#660066;">column</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;SIZE&#8221;</span></span><span class="pln"> </span><span class="atn"><span style="color:#660066;">type</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;int&#8221;</span></span><span class="pun"><span style="color:#666600;">/&gt;</span></span><span class="pln"><br />
  </span><span class="pun"><span style="color:#666600;">&lt;/</span></span><span class="tag"><span style="color:#000088;">class</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln"><br />
</span><span class="pun"><span style="color:#666600;">&lt;/</span></span><span class="tag"><span style="color:#000088;">hibernate-mapping</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span></p>
<p> </p>
<p>   </p>
<p> </p>
<p>If you’ve used Hibernate before, there should be nothing tricky here since <tt>Widget</tt> is a trivial class (there are no collections or other classes to associate to). So now we can wire up the Hibernate <tt>SessionFactory</tt></p>
<p> </p>
<h3> </h3>
<p> </p>
<p>Here is an example Hibernate <strong>SessionFactory</strong> configured in Spring. You will be using this instead of the typical <strong>hibernate-config.xml</strong>. All we are doing here is telling Hibernate/Spring what our Hibernate mapping files are:</p>
<pre><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">bean</span></span><span class="pln"> </span><span class="atn"><span style="color:#660066;">id</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">"sessionFactory"</span></span><span class="pln">
</span><span class="atn"><span style="color:#660066;">class</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">"org.springframework.orm.hibernate3.LocalSessionFactoryBean"</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln">
  </span><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">property</span></span><span class="pln"> </span><span class="atn"><span style="color:#660066;">name</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">"mappingResources"</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln">
    </span><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">list</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln">

      </span><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">value</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln">com/zabada/springrecipes/base/Widget.hbm.xml</span><span class="pun"><span style="color:#666600;">&lt;/</span></span><span class="tag"><span style="color:#000088;">value</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln">
    </span><span class="pun"><span style="color:#666600;">&lt;/</span></span><span class="tag"><span style="color:#000088;">list</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln">
  </span><span class="pun"><span style="color:#666600;">&lt;/</span></span><span class="tag"><span style="color:#000088;">property</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln">
</span><span class="pun"><span style="color:#666600;">&lt;/</span></span><span class="tag"><span style="color:#000088;">bean</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span>
If you have a <strong>hibernate.properties</strong> in your classpath, the Spring <strong>LocalSessionFactoryBean</strong> will use that file to configure the database connections, dialect and pooling. Alternatively, you can define a DataSource in Spring (any class that implements <strong>javax.sql.DataSource</strong>) and explicity set all of your Hibernate properties in the <strong>LocalSessionFactoryBean</strong>:</pre>
<p><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">bean</span></span><span class="pln"> </span><span class="atn"><span style="color:#660066;">id</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;sessionFactory&#8221;</span></span><span class="pln"><br />
</span><span class="atn"><span style="color:#660066;">class</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;org.springframework.orm.hibernate3.LocalSessionFactoryBean&#8221;</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln"><br />
  </span><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">property</span></span><span class="pln"> </span><span class="atn"><span style="color:#660066;">name</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;mappingResources&#8221;</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln"><br />
    </span><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">list</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln"><br />
      </span><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">value</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln">com/zabada/springrecipes/base/Widget.hbm.xml</span><span class="pun"><span style="color:#666600;">&lt;/</span></span><span class="tag"><span style="color:#000088;">value</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln"><br />
    </span><span class="pun"><span style="color:#666600;">&lt;/</span></span><span class="tag"><span style="color:#000088;">list</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pun"><span style="color:#666600;">&lt;/</span></span><span class="tag"><span style="color:#000088;">property</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln"><br />
  </span><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">property</span></span><span class="pln"> </span><span class="atn"><span style="color:#660066;">name</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;hibernateProperties&#8221;</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln"><br />
    </span><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">props</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln"><br />
      </span><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">prop</span></span><span class="pln"> </span><span class="atn"><span style="color:#660066;">key</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;hibernate.dialect&#8221;</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln"><br />
        org.hibernate.dialect.HSQLDialect<br />
      </span><span class="pun"><span style="color:#666600;">&lt;/</span></span><span class="tag"><span style="color:#000088;">prop</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln"><br />
    </span><span class="pun"><span style="color:#666600;">&lt;/</span></span><span class="tag"><span style="color:#000088;">props</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pun"><span style="color:#666600;">&lt;/</span></span><span class="tag"><span style="color:#000088;">property</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln"><br />
  </span><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">property</span></span><span class="pln"> </span><span class="atn"><span style="color:#660066;">name</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;dataSource&#8221;</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln"><br />
    </span><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">ref</span></span><span class="pln"> </span><span class="atn"><span style="color:#660066;">bean</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;dataSource&#8221;</span></span><span class="pun"><span style="color:#666600;">/&gt;</span></span><span class="pln"><br />
  </span><span class="pun"><span style="color:#666600;">&lt;/</span></span><span class="tag"><span style="color:#000088;">property</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln"><br />
</span><span class="pun"><span style="color:#666600;">&lt;/</span></span><span class="tag"><span style="color:#000088;">bean</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">bean</span></span><span class="pln"> </span><span class="atn"><span style="color:#660066;">id</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;dataSource&#8221;</span></span><span class="pln"><br />
</span><span class="atn"><span style="color:#660066;">class</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;org.springframework.jdbc.datasource.DriverManagerDataSource&#8221;</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">property</span></span><span class="pln"> </span><span class="atn"><span style="color:#660066;">name</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;driverClassName&#8221;</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln"><br />
    </span><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">value</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln">org.hsqldb.jdbcDriver</span><span class="pun"><span style="color:#666600;">&lt;/</span></span><span class="tag"><span style="color:#000088;">value</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln"><br />
  </span><span class="pun"><span style="color:#666600;">&lt;/</span></span><span class="tag"><span style="color:#000088;">property</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln"><br />
  </span><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">property</span></span><span class="pln"> </span><span class="atn"><span style="color:#660066;">name</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;url&#8221;</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln"><br />
    </span><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">value</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln">jdbc:hsqldb:mem:widgets</span><span class="pun"><span style="color:#666600;">&lt;/</span></span><span class="tag"><span style="color:#000088;">value</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pun"><span style="color:#666600;">&lt;/</span></span><span class="tag"><span style="color:#000088;">property</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln"><br />
  </span><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">property</span></span><span class="pln"> </span><span class="atn"><span style="color:#660066;">name</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;username&#8221;</span></span><span class="pun"><span style="color:#666600;">&gt;&lt;</span></span><span class="tag"><span style="color:#000088;">value</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln">sa</span><span class="pun"><span style="color:#666600;">&lt;/</span></span><span class="tag"><span style="color:#000088;">value</span></span><span class="pun"><span style="color:#666600;">&gt;&lt;/</span></span><span class="tag"><span style="color:#000088;">property</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln"><br />
  </span><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">property</span></span><span class="pln"> </span><span class="atn"><span style="color:#660066;">name</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;password&#8221;</span></span><span class="pun"><span style="color:#666600;">&gt;&lt;</span></span><span class="tag"><span style="color:#000088;">value</span></span><span class="pun"><span style="color:#666600;">&gt;&lt;/</span></span><span class="tag"><span style="color:#000088;">value</span></span><span class="pun"><span style="color:#666600;">&gt;&lt;/</span></span><span class="tag"><span style="color:#000088;">property</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln"><br />
</span><span class="pun"><span style="color:#666600;">&lt;/</span></span><span class="tag"><span style="color:#000088;">bean</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><br />
 </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p>The Spring <tt>HibernateDaoSupport</tt> class provides all kinds of convenience methods for working with Hibernate. Most of these are accessible via the <tt>HibernateTemplate</tt> object that this class exposes.</p>
<p>Please note that Hibernate 2 throws checked HibernateExceptions and Hibernate 3 throws runtime exceptions. I am using Hibernate 3 and am blowing off runtime exceptions that might be thrown, but it might be more appropriate to deal with these exceptions here (this is just a example, not prduction code!)</p>
<p>Anyway, here is our <tt>WidgetDAO</tt> implemented by extending <tt>HibernateDaoSupport</tt>:</p>
<p> </p>
<pre><span class="kwd"><span style="color:#000088;">public</span></span><span class="pln"> </span><span class="kwd"><span style="color:#000088;">class</span></span><span class="pln"> </span><span class="typ"><span style="color:#660066;">WidgetDAOHibernateImpl</span></span><span class="pln">
              </span><span class="kwd"><span style="color:#000088;">extends</span></span><span class="pln"> </span><span class="typ"><span style="color:#660066;">HibernateDaoSupport</span></span><span class="pln">
              </span><span class="kwd"><span style="color:#000088;">implements</span></span><span class="pln"> </span><span class="typ"><span style="color:#660066;">WidgetDAO</span></span><span class="pln">
</span><span class="pun"><span style="color:#666600;">{</span></span><span class="pln">
  </span><span class="com"><span style="color:#880000;">/**
   * Returns a java.util.List of all Widgets in the system.
   * @return
   */</span></span><span class="pln">
  </span><span class="kwd"><span style="color:#000088;">public</span></span><span class="pln"> </span><span class="typ"><span style="color:#660066;">Collection</span></span><span class="pln"> getWidgets</span><span class="pun"><span style="color:#666600;">()</span></span><span class="pln">
  </span><span class="pun"><span style="color:#666600;">{</span></span><span class="pln">
    </span><span class="kwd"><span style="color:#000088;">return</span></span><span class="pln"> getHibernateTemplate</span><span class="pun"><span style="color:#666600;">().</span></span><span class="pln">loadAll</span><span class="pun"><span style="color:#666600;">(</span></span><span class="typ"><span style="color:#660066;">Widget</span></span><span class="pun"><span style="color:#666600;">.</span></span><span class="kwd"><span style="color:#000088;">class</span></span><span class="pun"><span style="color:#666600;">);</span></span><span class="pln">
  </span><span class="pun"><span style="color:#666600;">}</span></span><span class="pln">

  </span><span class="com"><span style="color:#880000;">/**
   * Get a Widget Object given the id
   * @param id
   * @return
   */</span></span><span class="pln">
  </span><span class="kwd"><span style="color:#000088;">public</span></span><span class="pln"> </span><span class="typ"><span style="color:#660066;">Widget</span></span><span class="pln"> getWidgetById</span><span class="pun"><span style="color:#666600;">(</span></span><span class="typ"><span style="color:#660066;">Long</span></span><span class="pln"> id</span><span class="pun"><span style="color:#666600;">)</span></span><span class="pln">
  </span><span class="pun"><span style="color:#666600;">{</span></span><span class="pln">
    </span><span class="kwd"><span style="color:#000088;">return</span></span><span class="pln"> </span><span class="pun"><span style="color:#666600;">(</span></span><span class="typ"><span style="color:#660066;">Widget</span></span><span class="pun"><span style="color:#666600;">)</span></span><span class="pln">
            getHibernateTemplate</span><span class="pun"><span style="color:#666600;">().</span></span><span class="pln">load</span><span class="pun"><span style="color:#666600;">(</span></span><span class="typ"><span style="color:#660066;">Widget</span></span><span class="pun"><span style="color:#666600;">.</span></span><span class="kwd"><span style="color:#000088;">class</span></span><span class="pun"><span style="color:#666600;">,</span></span><span class="pln"> id</span><span class="pun"><span style="color:#666600;">);</span></span><span class="pln">
  </span><span class="pun"><span style="color:#666600;">}</span></span><span class="pln">

  </span><span class="com"><span style="color:#880000;">/**
   * Save a Widget Object, if the given Widget
   * is not in the data store,it should insert it,
   * if it is in the data store, it should update it.
   * @param widget
   */</span></span><span class="pln">
  </span><span class="kwd"><span style="color:#000088;">public</span></span><span class="pln"> </span><span class="typ"><span style="color:#660066;">Widget</span></span><span class="pln"> saveWidget</span><span class="pun"><span style="color:#666600;">(</span></span><span class="typ"><span style="color:#660066;">Widget</span></span><span class="pln"> widget</span><span class="pun"><span style="color:#666600;">)</span></span><span class="pln">
  </span><span class="pun"><span style="color:#666600;">{</span></span><span class="pln">
    getHibernateTemplate</span><span class="pun"><span style="color:#666600;">().</span></span><span class="pln">saveOrUpdate</span><span class="pun"><span style="color:#666600;">(</span></span><span class="pln">widget</span><span class="pun"><span style="color:#666600;">);</span></span><span class="pln">
    </span><span class="kwd"><span style="color:#000088;">return</span></span><span class="pln"> widget</span><span class="pun"><span style="color:#666600;">;</span></span><span class="pln">
  </span><span class="pun"><span style="color:#666600;">}</span></span><span class="pln">
</span><span class="pun"><span style="color:#666600;">}</span></span>
Now we wire up our DAO and weave in the HibernateInterceptor. This interceptor binds a new Hibernate Session to the thread before a method call, closing and removing it afterwards in case of any method outcome. If there already is a pre-bound Session, the interceptor simply participates in it. Note that the actual “widgetDAO” bean is defined as a proxy bean that really points to a bean called “widgetDaoTarget” which is where we wire up our actual implementation.</pre>
<p> <span class="com"><span style="color:#880000;">&lt;!&#8211; THE HIBERNATE INTERCEPTOR &#8211;&gt;</span></span><span class="pln"><br />
</span><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">bean</span></span><span class="pln"> </span><span class="atn"><span style="color:#660066;">id</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;hibernateInterceptor&#8221;</span></span><span class="pln"><br />
</span><span class="atn"><span style="color:#660066;">class</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;org.springframework.orm.hibernate3.HibernateInterceptor&#8221;</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln"><br />
  </span><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">property</span></span><span class="pln"> </span><span class="atn"><span style="color:#660066;">name</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;sessionFactory&#8221;</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">ref</span></span><span class="pln"> </span><span class="atn"><span style="color:#660066;">bean</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;sessionFactory&#8221;</span></span><span class="pun"><span style="color:#666600;">/&gt;</span></span><span class="pln"><br />
  </span><span class="pun"><span style="color:#666600;">&lt;/</span></span><span class="tag"><span style="color:#000088;">property</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln"><br />
</span><span class="pun"><span style="color:#666600;">&lt;/</span></span><span class="tag"><span style="color:#000088;">bean</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">bean</span></span><span class="pln"> </span><span class="atn"><span style="color:#660066;">id</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;widgetDaoTarget&#8221;</span></span><span class="pln"><br />
</span><span class="atn"><span style="color:#660066;">class</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;com.zabada.springrecipes.hibernate.WidgetDAOHibernateImpl&#8221;</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln"><br />
  </span><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">property</span></span><span class="pln"> </span><span class="atn"><span style="color:#660066;">name</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;sessionFactory&#8221;</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln"><br />
    </span><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">ref</span></span><span class="pln"> </span><span class="atn"><span style="color:#660066;">bean</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;sessionFactory&#8221;</span></span><span class="pun"><span style="color:#666600;">/&gt;</span></span><span class="pun"><span style="color:#666600;">&lt;/</span></span><span class="tag"><span style="color:#000088;">property</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln"><br />
</span><span class="pun"><span style="color:#666600;">&lt;/</span></span><span class="tag"><span style="color:#000088;">bean</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">bean</span></span><span class="pln"> </span><span class="atn"><span style="color:#660066;">id</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;widgetDAO&#8221;</span></span><span class="pln"><br />
  </span><span class="atn"><span style="color:#660066;">class</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;org.springframework.aop.framework.ProxyFactoryBean&#8221;</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln"><br />
  </span><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">property</span></span><span class="pln"> </span><span class="atn"><span style="color:#660066;">name</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;proxyInterfaces&#8221;</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln"><br />
    </span><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">value</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln">com.zabada.springrecipes.base.WidgetDAO</span><span class="pun"><span style="color:#666600;">&lt;/</span></span><span class="tag"><span style="color:#000088;">value</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln"><br />
  </span><span class="pun"><span style="color:#666600;">&lt;/</span></span><span class="tag"><span style="color:#000088;">property</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">property</span></span><span class="pln"> </span><span class="atn"><span style="color:#660066;">name</span></span><span class="pun"><span style="color:#666600;">=</span></span><span class="atv"><span style="color:#008800;">&#8220;interceptorNames&#8221;</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln"><br />
    </span><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">list</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln"><br />
      </span><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">value</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln">hibernateInterceptor</span><span class="pun"><span style="color:#666600;">&lt;/</span></span><span class="tag"><span style="color:#000088;">value</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln"><br />
      </span><span class="pun"><span style="color:#666600;">&lt;</span></span><span class="tag"><span style="color:#000088;">value</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln">widgetDaoTarget</span><span class="pun"><span style="color:#666600;">&lt;/</span></span><span class="tag"><span style="color:#000088;">value</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln"><br />
    </span><span class="pun"><span style="color:#666600;">&lt;/</span></span><span class="tag"><span style="color:#000088;">list</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pun"><span style="color:#666600;">&lt;/</span></span><span class="tag"><span style="color:#000088;">property</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span><span class="pln"><br />
</span><span class="pun"><span style="color:#666600;">&lt;/</span></span><span class="tag"><span style="color:#000088;">bean</span></span><span class="pun"><span style="color:#666600;">&gt;</span></span></p>
<p>   </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p>Spring can simplify your Hibernate code. Transactions can be wired in with AOP services provided by Spring.</p>
<p> </p>
<h3><a name="section-SpringAndHibernate-Note"><span style="color:#b60000;">Note:</span></a></h3>
<p> Spring provides support for both Hibernate 2.1.x and 3.0. Hibernate 2.1.x is supported in the package <tt>org.springframework.orm.hibernate</tt> and Hibernate 3.0 is support in the package <tt>org.springframework.orm.hibernate3</tt>. Both of these packages contain almost identitical classes.</p>
<ul>
<li>  <a class="external" href="http://static.springframework.org/spring/docs/2.5.x/reference/orm.html#orm-hibernate"><span style="color:#b60000;">Spring Reference Manual &#8211; Hibernate Integration</span></a></li>
<li><a class="external" href="http://www.hibernate.org/110.html"><span style="color:#b60000;">Data Access with Spring Framework</span></a> by Juergen Hoeller</li>
<li><a class="external" href="http://www.onjava.com/lpt/a/5854"><span style="color:#b60000;">OnJava: Wire Hibernate Transactions in Spring</span></a></li>
<li><a class="external" href="http://mvninstall.com/0764558315/expert_one_on_one_j2ee_development_without_ejb.html"><span style="color:#b60000;">Expert One-on-One J2EE Development without EJB &#8211; Chapter 10: Persistence</span></a></li>
<li><a class="external" href="http://mvninstall.com/1933988134/Spring_in_Action.html"><span style="color:#b60000;">Spring in Action &#8211; Chapter 4 &#8211; Hitting the Database</span></a> by Craig Walls and Ryan Breidenbach</li>
<li><a class="external" href="http://mvninstall.com/1590599217/Pro_Spring_2.html"><span style="color:#b60000;">Pro Spring &#8211; Chapter 9 &#8211; Using Hibernate in Spring Applications</span></a> by Rob Harrop and Jan Machacek</li>
</ul>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/thilms.wordpress.com/1/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/thilms.wordpress.com/1/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thilms.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thilms.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thilms.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thilms.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thilms.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thilms.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thilms.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thilms.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thilms.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thilms.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thilms.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thilms.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thilms.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thilms.wordpress.com/1/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thilms.wordpress.com&amp;blog=4180841&amp;post=1&amp;subd=thilms&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thilms.wordpress.com/2008/07/09/spring-and-hibernate-integration/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/abc4a573f24ef9acba714e4d503bc159?s=96&#38;d=identicon" medium="image">
			<media:title type="html">thilms</media:title>
		</media:content>
	</item>
	</channel>
</rss>
