﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-szhswl-文章分类-HIBERNATE</title><link>http://www.blogjava.net/szhswl/category/27818.html</link><description>宋针还的个人空间</description><language>zh-cn</language><lastBuildDate>Wed, 05 Dec 2007 14:52:17 GMT</lastBuildDate><pubDate>Wed, 05 Dec 2007 14:52:17 GMT</pubDate><ttl>60</ttl><item><title>使用模板模式简化DAO操作Hibernate </title><link>http://www.blogjava.net/szhswl/articles/165620.html</link><dc:creator>宋针还</dc:creator><author>宋针还</author><pubDate>Wed, 05 Dec 2007 10:49:00 GMT</pubDate><guid>http://www.blogjava.net/szhswl/articles/165620.html</guid><wfw:comment>http://www.blogjava.net/szhswl/comments/165620.html</wfw:comment><comments>http://www.blogjava.net/szhswl/articles/165620.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/szhswl/comments/commentRss/165620.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/szhswl/services/trackbacks/165620.html</trackback:ping><description><![CDATA[相信使用过Spring ＋ Hibernate开发过的人，在写DAO的时候都使用过Spring的HibernateDaoSupport类，然后在实现的时候就可以很轻松的使用getHibernateTemplate()方法之后就可以调用save()、delete()、update()等Hibernate的Session的操作，很简单。比如：<br />
　　<br />
　　getHibernateTemplate().save(user);<br />
　　<br />
　　这样一句话在我们没有Spring的时候就必须使用如下的代码才能完成：<br />
　　<br />
　　Session session = HibernateUtil.getSession();<br />
　　Transaction tx = session.beginTransaction();<br />
　　session.save(user);<br />
　　tx.commit();<br />
　　HibernateUtil.colseSession();<br />
　　这里还省去了异常处理，同时使用了HibernateUtil类来简化从SessionFactory获取Session，以及关闭Session等处理。<br />
　　<br />
　　但是我们在使用Hibernate的时候不一定会使用Spring，所以我们可以模仿Spring的处理方式，做一个Hibernate的模板，使用模板模式来简化我们的开发，其主要的目的就是为了简化开发，使代码达到最大话的重用。<br />
　　<br />
　　<strong>1．我们现来实现一个Hibernate模板：</strong><br />
　　<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">　　</span><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;kick.hibernate;<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;net.sf.hibernate.HibernateException;<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;net.sf.hibernate.Session;<br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;net.sf.hibernate.Transaction;<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img id="Codehighlighter1_184_637_Open_Image" onclick="this.style.display='none'; Codehighlighter1_184_637_Open_Text.style.display='none'; Codehighlighter1_184_637_Closed_Image.style.display='inline'; Codehighlighter1_184_637_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_184_637_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_184_637_Closed_Text.style.display='none'; Codehighlighter1_184_637_Open_Image.style.display='inline'; Codehighlighter1_184_637_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />　　</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;HibernateTemplate</span><span id="Codehighlighter1_184_637_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_184_637_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img id="Codehighlighter1_266_635_Open_Image" style="display: inline" onclick="this.style.display='none'; Codehighlighter1_266_635_Open_Text.style.display='none'; Codehighlighter1_266_635_Closed_Image.style.display='inline'; Codehighlighter1_266_635_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_266_635_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_266_635_Closed_Text.style.display='none'; Codehighlighter1_266_635_Open_Image.style.display='inline'; Codehighlighter1_266_635_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />　　</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;Object&nbsp;run(HibernateCallback&nbsp;callback)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;HibernateException</span><span id="Codehighlighter1_266_635_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_266_635_Open_Text" style="display: inline"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />　　Session&nbsp;session&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />　　Transaction&nbsp;tx&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img id="Codehighlighter1_325_511_Open_Image" onclick="this.style.display='none'; Codehighlighter1_325_511_Open_Text.style.display='none'; Codehighlighter1_325_511_Closed_Image.style.display='inline'; Codehighlighter1_325_511_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_325_511_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_325_511_Closed_Text.style.display='none'; Codehighlighter1_325_511_Open_Image.style.display='inline'; Codehighlighter1_325_511_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />　　</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_325_511_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_325_511_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />　　session&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;HibernateSessionutil.currentSession();<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />　　tx&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;session.beginTransaction();<br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />　　Object&nbsp;result&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;callback.execute(session);<br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />　　tx.commit();<br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />　　session.flush();<br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />　　</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;result;<br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img id="Codehighlighter1_542_578_Open_Image" onclick="this.style.display='none'; Codehighlighter1_542_578_Open_Text.style.display='none'; Codehighlighter1_542_578_Closed_Image.style.display='inline'; Codehighlighter1_542_578_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_542_578_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_542_578_Closed_Text.style.display='none'; Codehighlighter1_542_578_Open_Image.style.display='inline'; Codehighlighter1_542_578_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />　　}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(HibernateException&nbsp;e)&nbsp;</span><span id="Codehighlighter1_542_578_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_542_578_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">19</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />　　tx.rollback();<br />
</span><span style="color: #008080">20</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />　　</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
</span><span style="color: #008080">21</span><span style="color: #000000"><img id="Codehighlighter1_588_631_Open_Image" onclick="this.style.display='none'; Codehighlighter1_588_631_Open_Text.style.display='none'; Codehighlighter1_588_631_Closed_Image.style.display='inline'; Codehighlighter1_588_631_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_588_631_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_588_631_Closed_Text.style.display='none'; Codehighlighter1_588_631_Open_Image.style.display='inline'; Codehighlighter1_588_631_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />　　}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">finally</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_588_631_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_588_631_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">22</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />　　HibernateSessionutil.closeSession();<br />
</span><span style="color: #008080">23</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />　　}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">24</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />　　}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">25</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span></div>
</span>　　这里类很简单，就是使用一个实现HibernateCallBack接口的一个回掉类，在调用的时候根据具体的需求实现HibernateCallBack类。<br />
　　<br />
　　<strong>2．回掉接口HibernateCallBack：</strong><br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">　　</span><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;kick.hibernate;<br />
</span><span style="color: #008080">2</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　<br />
</span><span style="color: #008080">3</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;net.sf.hibernate.HibernateException;<br />
</span><span style="color: #008080">4</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;net.sf.hibernate.Session;<br />
</span><span style="color: #008080">5</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　<br />
</span><span style="color: #008080">6</span><span style="color: #000000"><img id="Codehighlighter1_150_214_Open_Image" onclick="this.style.display='none'; Codehighlighter1_150_214_Open_Text.style.display='none'; Codehighlighter1_150_214_Closed_Image.style.display='inline'; Codehighlighter1_150_214_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_150_214_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_150_214_Closed_Text.style.display='none'; Codehighlighter1_150_214_Open_Image.style.display='inline'; Codehighlighter1_150_214_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />　　</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">interface</span><span style="color: #000000">&nbsp;HibernateCallBack&nbsp;</span><span id="Codehighlighter1_150_214_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_150_214_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">7</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />　　Object&nbsp;execute(Session&nbsp;session)</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;HibernateException;<br />
</span><span style="color: #008080">8</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />　　}</span></span></div>
<br />
　　<br />
　　好了，到此为止我们就可以使用这个模板了，可以用如下的方式使用：<br />
　　HibernateTemplate.run(new HibernateCallback() {<br />
　　public Object execute(Session session) throws HibernateException {<br />
　　session.save(user);<br />
　　return null;<br />
　　}<br />
　　});<br />
　　<br />
　　看看，是不是省去了很多代码？^_^<br />
　　<br />
　　不过这还没有达到想Spring里面那样简单，不要着急，&#8220;面包会有的&#8221;呵呵，我们会达到的。<br />
　　<br />
　　<strong>3．实现我们自己的HibernateSupport类：</strong><br />
　　<br />
　　从上面的代码可以看出，我们要自己实现HibernateCallback接口，而每次我们实现的时候又重复代码了。因此我们再抽象，讲这些实现放到我们的HibernateSupport类里面去。看看我们上面的代码就知道我们实现HibernateCallback接口的目的就是为了调用session.save()方法，即session的方法。代码如下：<br />
　　<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">　　</span><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;kick.hibernate;<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.Serializable;<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　<br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;net.sf.hibernate.HibernateException;<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;net.sf.hibernate.Session;<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img id="Codehighlighter1_178_1078_Open_Image" onclick="this.style.display='none'; Codehighlighter1_178_1078_Open_Text.style.display='none'; Codehighlighter1_178_1078_Closed_Image.style.display='inline'; Codehighlighter1_178_1078_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_178_1078_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_178_1078_Closed_Text.style.display='none'; Codehighlighter1_178_1078_Open_Image.style.display='inline'; Codehighlighter1_178_1078_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />　　</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;HibernateSupport</span><span id="Codehighlighter1_178_1078_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_178_1078_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />　　<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img id="Codehighlighter1_250_434_Open_Image" onclick="this.style.display='none'; Codehighlighter1_250_434_Open_Text.style.display='none'; Codehighlighter1_250_434_Closed_Image.style.display='inline'; Codehighlighter1_250_434_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_250_434_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_250_434_Closed_Text.style.display='none'; Codehighlighter1_250_434_Open_Image.style.display='inline'; Codehighlighter1_250_434_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />　　</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Object&nbsp;save(</span><span style="color: #0000ff">final</span><span style="color: #000000">&nbsp;Object&nbsp;object)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;HibernateException</span><span id="Codehighlighter1_250_434_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_250_434_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img id="Codehighlighter1_306_428_Open_Image" onclick="this.style.display='none'; Codehighlighter1_306_428_Open_Text.style.display='none'; Codehighlighter1_306_428_Closed_Image.style.display='inline'; Codehighlighter1_306_428_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_306_428_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_306_428_Closed_Text.style.display='none'; Codehighlighter1_306_428_Open_Image.style.display='inline'; Codehighlighter1_306_428_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />　　</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;HibernateTemplate.run(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;HibernateCallBack()</span><span id="Codehighlighter1_306_428_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_306_428_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />　　<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img id="Codehighlighter1_378_421_Open_Image" onclick="this.style.display='none'; Codehighlighter1_378_421_Open_Text.style.display='none'; Codehighlighter1_378_421_Closed_Image.style.display='inline'; Codehighlighter1_378_421_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_378_421_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_378_421_Closed_Text.style.display='none'; Codehighlighter1_378_421_Open_Image.style.display='inline'; Codehighlighter1_378_421_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />　　</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Object&nbsp;execute(Session&nbsp;session)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;HibernateException&nbsp;</span><span id="Codehighlighter1_378_421_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_378_421_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />　　session.save(object);<br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />　　</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />　　}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />　　<br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />　　}</span></span><span style="color: #000000">);<br />
</span><span style="color: #008080">19</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />　　}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">20</span><span style="color: #000000"><img id="Codehighlighter1_525_697_Open_Image" onclick="this.style.display='none'; Codehighlighter1_525_697_Open_Text.style.display='none'; Codehighlighter1_525_697_Closed_Image.style.display='inline'; Codehighlighter1_525_697_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_525_697_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_525_697_Closed_Text.style.display='none'; Codehighlighter1_525_697_Open_Image.style.display='inline'; Codehighlighter1_525_697_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />　　</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Object&nbsp;save(</span><span style="color: #0000ff">final</span><span style="color: #000000">&nbsp;Object&nbsp;object,</span><span style="color: #0000ff">final</span><span style="color: #000000">&nbsp;Serializable&nbsp;id)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;HibernateException</span><span id="Codehighlighter1_525_697_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_525_697_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">21</span><span style="color: #000000"><img id="Codehighlighter1_581_691_Open_Image" onclick="this.style.display='none'; Codehighlighter1_581_691_Open_Text.style.display='none'; Codehighlighter1_581_691_Closed_Image.style.display='inline'; Codehighlighter1_581_691_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_581_691_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_581_691_Closed_Text.style.display='none'; Codehighlighter1_581_691_Open_Image.style.display='inline'; Codehighlighter1_581_691_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />　　</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;HibernateTemplate.run(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;HibernateCallBack()</span><span id="Codehighlighter1_581_691_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_581_691_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">22</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />　　<br />
</span><span style="color: #008080">23</span><span style="color: #000000"><img id="Codehighlighter1_638_684_Open_Image" onclick="this.style.display='none'; Codehighlighter1_638_684_Open_Text.style.display='none'; Codehighlighter1_638_684_Closed_Image.style.display='inline'; Codehighlighter1_638_684_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_638_684_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_638_684_Closed_Text.style.display='none'; Codehighlighter1_638_684_Open_Image.style.display='inline'; Codehighlighter1_638_684_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />　　</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Object&nbsp;execute()&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;HibernateException&nbsp;</span><span id="Codehighlighter1_638_684_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_638_684_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">24</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />　　session.save(object,id);<br />
</span><span style="color: #008080">25</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />　　</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
</span><span style="color: #008080">26</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />　　}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">27</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />　　<br />
</span><span style="color: #008080">28</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />　　}</span></span><span style="color: #000000">);<br />
</span><span style="color: #008080">29</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />　　}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">30</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />　　<br />
</span><span style="color: #008080">31</span><span style="color: #000000"><img id="Codehighlighter1_777_969_Open_Image" onclick="this.style.display='none'; Codehighlighter1_777_969_Open_Text.style.display='none'; Codehighlighter1_777_969_Closed_Image.style.display='inline'; Codehighlighter1_777_969_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_777_969_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_777_969_Closed_Text.style.display='none'; Codehighlighter1_777_969_Open_Image.style.display='inline'; Codehighlighter1_777_969_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />　　</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Object&nbsp;saveOrUpdate(</span><span style="color: #0000ff">final</span><span style="color: #000000">&nbsp;Object&nbsp;object)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;HibernateException</span><span id="Codehighlighter1_777_969_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_777_969_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">32</span><span style="color: #000000"><img id="Codehighlighter1_833_963_Open_Image" onclick="this.style.display='none'; Codehighlighter1_833_963_Open_Text.style.display='none'; Codehighlighter1_833_963_Closed_Image.style.display='inline'; Codehighlighter1_833_963_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_833_963_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_833_963_Closed_Text.style.display='none'; Codehighlighter1_833_963_Open_Image.style.display='inline'; Codehighlighter1_833_963_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />　　</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;HibernateTemplate.run(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;HibernateCallBack()</span><span id="Codehighlighter1_833_963_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_833_963_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">33</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />　　<br />
</span><span style="color: #008080">34</span><span style="color: #000000"><img id="Codehighlighter1_905_956_Open_Image" onclick="this.style.display='none'; Codehighlighter1_905_956_Open_Text.style.display='none'; Codehighlighter1_905_956_Closed_Image.style.display='inline'; Codehighlighter1_905_956_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_905_956_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_905_956_Closed_Text.style.display='none'; Codehighlighter1_905_956_Open_Image.style.display='inline'; Codehighlighter1_905_956_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />　　</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Object&nbsp;execute(Session&nbsp;session)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;HibernateException&nbsp;</span><span id="Codehighlighter1_905_956_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_905_956_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">35</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />　　session.saveOrUpdate(object);<br />
</span><span style="color: #008080">36</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />　　</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
</span><span style="color: #008080">37</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />　　}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">38</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />　　<br />
</span><span style="color: #008080">39</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />　　}</span></span><span style="color: #000000">);<br />
</span><span style="color: #008080">40</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />　　}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">41</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />　　&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;<br />
</span><span style="color: #008080">42</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />　　&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;<br />
</span><span style="color: #008080">43</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />　　&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;<br />
</span><span style="color: #008080">44</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />　　</span></div>
</span><br />
　　调用一些其他的session的方法。<br />
　　<br />
　　}<br />
　　<br />
　　<strong>4．抽象RootDao：</strong><br />
　　<br />
　　该类为抽象类，在实现自己的DAO类的时候继承该类。该类的有一个HibernateSupport的对象，在子类中使用getHibernateTemplate()方法就可以得到该对象，然后调用它对应的方法。实现代码如下：<br />
　　<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">　　</span><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;kick.hibernate.dao;<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;net.sf.hibernate.Session;<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;kick.hibernate.HibernateTemplateImpl;<br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img id="Codehighlighter1_150_346_Open_Image" onclick="this.style.display='none'; Codehighlighter1_150_346_Open_Text.style.display='none'; Codehighlighter1_150_346_Closed_Image.style.display='inline'; Codehighlighter1_150_346_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_150_346_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_150_346_Closed_Text.style.display='none'; Codehighlighter1_150_346_Open_Image.style.display='inline'; Codehighlighter1_150_346_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />　　</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">abstract</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;RootDao&nbsp;</span><span id="Codehighlighter1_150_346_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_150_346_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />　　</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;HibernateSupport&nbsp;temp&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />　　<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img id="Codehighlighter1_197_234_Open_Image" onclick="this.style.display='none'; Codehighlighter1_197_234_Open_Text.style.display='none'; Codehighlighter1_197_234_Closed_Image.style.display='inline'; Codehighlighter1_197_234_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_197_234_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_197_234_Closed_Text.style.display='none'; Codehighlighter1_197_234_Open_Image.style.display='inline'; Codehighlighter1_197_234_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />　　</span><span id="Codehighlighter1_197_234_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**&nbsp;*/</span><span id="Codehighlighter1_197_234_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br />
</span><span style="color: #008080">10</span><span style="color: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />　　*&nbsp;</span><span style="color: #808080">@return</span><span style="color: #008000">&nbsp;Returns&nbsp;the&nbsp;temp.<br />
</span><span style="color: #008080">11</span><span style="color: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />　　</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img id="Codehighlighter1_305_342_Open_Image" onclick="this.style.display='none'; Codehighlighter1_305_342_Open_Text.style.display='none'; Codehighlighter1_305_342_Closed_Image.style.display='inline'; Codehighlighter1_305_342_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_305_342_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_305_342_Closed_Text.style.display='none'; Codehighlighter1_305_342_Open_Image.style.display='inline'; Codehighlighter1_305_342_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />　　</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;HibernateTemplateImpl&nbsp;getHibernateTemplate(Session&nbsp;session)&nbsp;</span><span id="Codehighlighter1_305_342_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_305_342_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />　　</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;HibernateSupport();<br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />　　}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />　　}</span></span></div>
<br />
　　<br />
　　<strong>5．使用例子：</strong><br />
　　<br />
　　定义一个自己的DAO类，实现代码如下：<br />
　　<br />
　　public class UserDaoImpl extends RootDao implements UserDaoInterface{<br />
　　public void saveUser(User user) throws KickException {<br />
　　getHibernateTemplate().saveOrUpdate(user);<br />
　　}<br />
　　&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;<br />
　　实现其他的方法<br />
　　&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;<br />
　　}
<img src ="http://www.blogjava.net/szhswl/aggbug/165620.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/szhswl/" target="_blank">宋针还</a> 2007-12-05 18:49 <a href="http://www.blogjava.net/szhswl/articles/165620.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>优化hibernate性能的几点建议</title><link>http://www.blogjava.net/szhswl/articles/165525.html</link><dc:creator>宋针还</dc:creator><author>宋针还</author><pubDate>Wed, 05 Dec 2007 07:30:00 GMT</pubDate><guid>http://www.blogjava.net/szhswl/articles/165525.html</guid><wfw:comment>http://www.blogjava.net/szhswl/comments/165525.html</wfw:comment><comments>http://www.blogjava.net/szhswl/articles/165525.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/szhswl/comments/commentRss/165525.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/szhswl/services/trackbacks/165525.html</trackback:ping><description><![CDATA[1、针对oracle数据库而言，Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数，一般设置为30、50、100。Oracle数据库的JDBC驱动默认的Fetch Size=15，设置Fetch Size设置为：30、50，性能会有明显提升，如果继续增大，超出100，性能提升不明显，反而会消耗内存。<br />
<br />
　　即在hibernate配制文件中进行配制：<br />
<br />
<table bordercolor="#cccccc" width="90%" align="center" bgcolor="#e3e3e3" border="1">
    <tbody>
        <tr>
            <td>1 ＜property name="hibernateProperties"＞<br />
            2 ＜props＞<br />
            3 ＜prop key="hibernate.dialect"＞org.hibernate.dialect.Oracle9Dialect＜/prop＞<br />
            4 ＜prop key="hibernate.show_sql"＞false＜/prop＞<br />
            5 ＜!-- Create/update the database tables automatically when the JVM starts up<br />
            6 ＜prop key="hibernate.hbm2ddl.auto"＞update＜/prop＞ --＞<br />
            7 ＜!-- Turn batching off for better error messages under PostgreSQL <br />
            8 ＜prop key="hibernate.jdbc.batch_size"＞100＜/prop＞ --＞<br />
            9 ＜prop key="hibernate.jdbc.batch_size"＞50＜/prop＞<br />
            10 ＜/props＞<br />
            11 ＜/property＞Fetch Size设的越大，读数据库的次数越少，速度越快；Fetch Size越小，读数据库的次数越多，速度越慢。</td>
        </tr>
    </tbody>
</table>
<br />
　　2、如果是超大的系统，建议生成htm文件。加快页面提升速度。<br />
<br />
　　3、不要把所有的责任推在hibernate上，对代码进行重构，减少对数据库的操作，尽量避免在数据库查询时使用in操作，以及避免递归查询操作，代码质量、系统设计的合理性决定系统性能的高低。<br />
<br />
　　4、 对大数据量查询时，慎用list()或者iterator()返回查询结果， <br />
<br />
　　（1）. 使用List()返回结果时，Hibernate会所有查询结果初始化为持久化对象，结果集较大时，会占用很多的处理时间。 <br />
<br />
　　（2）. 而使用iterator()返回结果时，在每次调用iterator.next()返回对象并使用对象时，Hibernate才调用查询将对应的对象初始化，对于大数据量时，每调用一次查询都会花费较多的时间。当结果集较大，但是含有较大量相同的数据，或者结果集不是全部都会使用时，使用iterator()才有优势。<br />
<br />
　　5、在一对多、多对一的关系中，使用延迟加载机制，会使不少的对象在使用时方会初始化，这样可使得节省内存空间以及减少数据库的负荷，而且若PO中的集合没有被使用时，就可减少互数据库的交互从而减少处理时间。 <br />
<br />
　　6、对含有关联的PO（持久化对象）时，若default-cascade="all"或者 &#8220;save-update&#8221;，新增PO时，请注意对PO中的集合的赋值操作，因为有可能使得多执行一次update操作。 <br />
<br />
　　7、 对于大数据量新增、修改、删除操作或者是对大数据量的查询，与数据库的交互次数是决定处理时间的最重要因素，减少交互的次数是提升效率的最好途径，所以在开发过程中，请将show_sql设置为true，深入了解Hibernate的处理过程，尝试不同的方式，可以使得效率提升。尽可能对每个页面的显示，对数据库的操作减少到100----150条以内。越少越好。
<img src ="http://www.blogjava.net/szhswl/aggbug/165525.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/szhswl/" target="_blank">宋针还</a> 2007-12-05 15:30 <a href="http://www.blogjava.net/szhswl/articles/165525.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>