<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    簡介HibernateTemplate

    就類似JdbcTemplate一樣,HibernateTemplate封裝了Hibernate存儲時的一些細(xì)節(jié),例如try...catch的例外處理等等,HibernateTemplate的使用在觀念上與JdbcTemplate是類似的,這邊簡單的介紹一下HibernateTemplate的使用。

      首先我們看一下Bean定義檔,這與前一個主題沒什麼太大的差別:

     代碼:

    <?xml version="1.0" encoding="UTF-8"?> 
    <!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN""http://www.springframework.org/dtd/spring-beans.dtd"> 
    <beans> 
        <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
            <property name="driverClassName"> 
                <value>com.mysql.jdbc.Driver</value> 
            </property> 
            <property name="url"> 
                <value>jdbc:mysql://localhost:3306/TestDB</value> 
            </property> 
            <property name="username"> 
                <value>caterpillar</value> 
            </property> 
            <property name="password"> 
                <value>123456</value> 
            </property> 
        </bean> 
        
        <bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean" destroy-method="close"> 
            <property name="dataSource"> 
                <ref bean="dataSource"/> 
            </property> 
            <property name="mappingResources"> 
                <list> 
                    <value>User.hbm.xml</value> 
                </list> 
            </property> 
            <property name="hibernateProperties"> 
                <props> 
                    <prop key="hibernate.dialect"> 
                        net.sf.hibernate.dialect.MySQLDialect 
                    </prop> 
                    <prop key="hibernate.show_sql"> 
                        true 
                    </prop> 
                </props> 
            </property> 
        </bean> 
    
    
        <bean id="userDAO" class="onlyfun.caterpillar.UserDAO"> 
            <property name="sessionFactory"> 
                <ref bean="sessionFactory"/> 
            </property> 
        </bean> 
    </beans>

      在這邊UserDAO將繼承自HibernateDaoSupport類別,這可以幫我們省去一些管理sessionFactory、hibernateTemplate資源的工作,我們只要注入sessionFactory就好了,我們的DAO設(shè)計如下:

     代碼:

    UserDAO.java
    package onlyfun.caterpillar; 
    
    import net.sf.hibernate.*; 
    import org.springframework.orm.hibernate.*; 
    import org.springframework.orm.hibernate.support.*; 
    
    
    public class UserDAO extends HibernateDaoSupport { 
        public void insertUser(final User user) { 
            getHibernateTemplate().execute(new HibernateCallback() { 
                    publicObject doInHibernate(Session session) throws HibernateException { 
                        session.saveOrUpdate(user); 
                        returnnull; 
                    } 
                }); 
        } 
    }

      只要注入sessionFactory,之後調(diào)用getHibernateTemplate()就可以取得HibernateTemplate的實例,我們利用callback方法,實作HibernateCallback介面,在doInHibernate()中進(jìn)行存儲操作。

      對於簡單的存儲操作,我們甚至可以直接使用HibernateTemplate所提供的find()、load()、saveOrUpdate()、delete()等方法,而不用使用callback,例如:

     代碼:

    UserDAO.java
    package onlyfun.caterpillar; 
    
    import org.springframework.orm.hibernate.support.*; 
    
    public class UserDAO extends HibernateDaoSupport { 
        public void insertUser(User user) { 
            getHibernateTemplate().saveOrUpdate(user); 
        } 
    }

      不用懷疑,程式就是如此簡單,所有的細(xì)節(jié)都被封裝起來了。

      HibernateTemplate中只能丟出unckecked例外,如果需要處理checked例外,則您可以使用AOP Interceptor來取代HibernateTemplate,從而取代callback方法,在參考手冊中有介紹如何配置,這邊複製過來以便參考:

     代碼:

    .... 
        <bean id="myHibernateInterceptor" 
            class="org.springframework.orm.hibernate.HibernateInterceptor"> 
            <property name="sessionFactory"> 
                <ref bean="mySessionFactory"/> 
            </property> 
        </bean> 
    
        <bean id="myProductDaoTarget" class="product.ProductDaoImpl"> 
            <property name="sessionFactory"> 
                <ref bean="mySessionFactory"/> 
            </property> 
        </bean> 
    
        <bean id="myProductDao" class="org.springframework.aop.framework.ProxyFactoryBean"> 
            <property name="proxyInterfaces"> 
                <value>product.ProductDao</value> 
            </property> 
            <property name="interceptorNames"> 
                <list> 
                    <value>myHibernateInterceptor</value> 
                    <value>myProductDaoTarget</value> 
                </list> 
            </property> 
        </bean> 
    ....

     代碼:

    ProductDaoImpl.java
    public class ProductDaoImpl extends HibernateDaoSupport implements ProductDao { 
    
        public List loadProductsByCategory(finalString category) throws MyException { 
            Session session = SessionFactoryUtils.getSession(getSessionFactory(), false); 
            try { 
                List result = session.find( 
                    "from test.Product product where product.category=?", 
                    category, Hibernate.STRING); 
                if (result == null) { 
                    thrownew MyException("invalid search result"); 
                } 
                return result; 
            } 
            catch (HibernateException ex) { 
                throw SessionFactoryUtils.convertHibernateAccessException(ex); 
            } 
        } 
    }

    posted on 2007-03-09 08:57 77 閱讀(1241) 評論(0)  編輯  收藏 所屬分類: ajax技術(shù)


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    <2007年3月>
    25262728123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導(dǎo)航

    統(tǒng)計

    常用鏈接

    留言簿(12)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    新聞檔案

    相冊

    API文檔

    java開發(fā)與研究

    にほん

    上海房產(chǎn)

    東京生活

    數(shù)據(jù)庫大全

    編程與開發(fā)

    美國開發(fā)生活

    走向管理

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 免费看的黄色大片| 亚洲人成免费电影| 亚洲VA综合VA国产产VA中| 亚洲人成人伊人成综合网无码| 无码精品A∨在线观看免费| 亚洲高清视频免费| 亚洲w码欧洲s码免费| 亚洲国产日韩在线成人蜜芽| 1000部免费啪啪十八未年禁止观看| 国产成人A人亚洲精品无码| 国产婷婷成人久久Av免费高清 | 亚洲真人无码永久在线观看| 亚欧在线精品免费观看一区| 亚洲av永久无码嘿嘿嘿| 在线免费观看一级片| 亚洲av日韩av永久在线观看| 亚洲av手机在线观看| 青青操在线免费观看| 亚洲国产天堂在线观看| 免费在线视频你懂的| 国产精品亚洲综合久久 | 国产亚洲精品免费视频播放| 一个人晚上在线观看的免费视频| 亚洲综合伊人久久大杳蕉| 久久美女网站免费| 亚洲精品亚洲人成在线播放| 日日夜夜精品免费视频| 国产免费人成视频尤勿视频| 亚洲av日韩综合一区在线观看| 男女做羞羞的事视频免费观看无遮挡 | 女人被免费视频网站| 大桥未久亚洲无av码在线| 久久亚洲AV永久无码精品| 96免费精品视频在线观看| 亚洲制服丝袜中文字幕| 免费人妻无码不卡中文字幕18禁| 99精品免费视频| 中文字幕亚洲精品无码| 在线a亚洲v天堂网2019无码| 四虎免费影院ww4164h| 全部一级一级毛片免费看|