<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ā)生活

    走向管理

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 二级毛片免费观看全程| 午夜免费福利片观看| 亚洲精品免费网站| 亚洲美女色在线欧洲美女| 五月婷婷亚洲综合| 亚洲丰满熟女一区二区哦| 久久久久久久久免费看无码| 亚洲网站免费观看| 3344免费播放观看视频| 亚洲国产成人手机在线电影bd| 日韩在线永久免费播放| 亚洲 日韩经典 中文字幕 | 成人在线免费观看| 亚洲午夜国产精品无卡| 成人免费在线看片| 99在线在线视频免费视频观看| 最新亚洲成av人免费看| 最近更新免费中文字幕大全| 亚洲精品高清国产一线久久| 中国一级毛片视频免费看| 亚洲第一中文字幕| 黄在线观看www免费看| 亚洲熟妇AV日韩熟妇在线| 永久亚洲成a人片777777| 久久久免费观成人影院| 亚洲国产精品成人久久| 亚洲视频在线免费观看| 亚洲日本乱码卡2卡3卡新区| 午夜电影免费观看| 久久91亚洲精品中文字幕| 七色永久性tv网站免费看| 浮力影院亚洲国产第一页| 久久成人永久免费播放| 亚洲精品国产成人片| 99re视频精品全部免费| 中文字幕亚洲码在线| 亚洲性日韩精品一区二区三区| 国产午夜精品免费一区二区三区 | 91手机看片国产永久免费| 在线亚洲午夜片AV大片| 国产成人免费高清在线观看|