国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Cook JDBC with SpringFramework

2019-11-18 11:33:58
字體:
來源:轉載
供稿:網友

    我們的目標是希望在任何使用JDBC的場合都能夠利用SPRingFramework的JDBC Support Module,同時盡可能少地引入不必要的元素。因此,我們假定不使用J2EE環境提供的任何服務,也不使用SpringFramework的IoC容器和AOP兩大特性。

    首先,我們需要的自然是一個DataSource。在非J2EE環境下,可以使用Jakarta的commons-dbcp來得到一個DataSource的實例。我們選擇使用SharedPoolDataSource,它提供了一個close()方法,在程序結束前調用它可以關閉所有的Connection,釋放相關的資源。

    接著,將spring-core.jar和spring-dao.jar置入CLASSPATH。事實上,我們將要用到的class幾乎全部都在spring-dao.jar中,之所以需要spring-core.jar是因為NestedRuntimeException,所有JDBC Support Module中的異常都直接或間接繼續自這個Runtime Exception。由此也可以看出,我們只是在受控制的情況下引入了SpringFramework的一小部分而已。

    下面,我們就可以開始逐步設置和組裝我們的基礎設施。

org.springframework.jdbc.core.JdbcTemplate

    JdbcTemplate是整個package的核心,所有的JDBC調用流程都通過它來完成,開發者只需要實現對應的callback接口即可。JdbcTemplate是無狀態且線程安全的,也就是說在整個系統中只需要創建一個實例就夠了。創建它的時候需要提供DataSource作為參數。

    JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
    jdbcTemplate.afterPropertiesSet();

    afterPropertiesSet()方法是對InitializingBean接口的實現,假如實例是由IoC容器治理的,則容器會自動調用。由于我們并沒有使用IoC容器,所以需要在創建實例后主動調用該方法。

org.springframework.transaction.support.TransactionTemplate

    TransactionTemplate幫助我們以編程的方式實現事務控制。同樣的,開發者也是通過實現callback接口來使用它。TransactionTemplate也是無狀態且線程安全的。創建TransactionTemplate的實例需要提供一個PlatformTransactionManager的實例,在SpringFramework中有多種PlatformTransactionManager的實現類,提供多種事務控制的途徑。基于前面設定的限制,我們選擇DataSourceTransactionManager。


    PlatformTransactionManager platformTransactionManager = 
        new DataSourceTransactionManager(dataSource);
    TransactionTemplate transactionTemplate =
        new TransactionTemplate(platformTransactionManager);
    transactionTemplate.afterPropertiesSet();

org.springframework.jdbc.support.incrementer.DataFieldMaxValueIncrementer

    在數據庫中插入數據的時候,需要獲得唯一的Long或Integer類型的值做為主鍵。DataFieldMaxValueIncrementer提供了這樣一個途徑,而具體的實現方法則因各種數據庫系統而異。簡單地說,假如數據庫系統本身提供了Sequences(例如Oracle),則直接從sequences取得所需的序列值,假如數據庫系統不支持Sequences(例如MySQL),則通過一個單獨的Table來保存和產生新的序列值。每個DataFieldMaxValueIncrementer的實例都需要有一個對應的Sequences或者Table,換句話說,開發者要選擇是整個系統共用同一個Incrementer實例,還是對應每個Table使用各自專有的Incrementer實例。目前SpringFramework已經提供了針對Oracle、DB2、PostgreSQL、MySQL,HSQL五種數據庫的實現,支持從超重量級直到超輕量級的常見數據庫系統,而且,要自己編寫針對其它數據庫系統的實現也并非難事。在例子中我們選擇使用HSQL數據庫,創建一個HsqlMaxValueIncrementer的實例需要提供DataSource、table name、column name。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 报价| 北京市| 五华县| 江都市| 额尔古纳市| 安阳市| 买车| 南汇区| 旬阳县| 镇雄县| 乐亭县| 永修县| 崇阳县| 西畴县| 太康县| 武穴市| 舞阳县| 云霄县| 崇仁县| 浦县| 永州市| 通道| 茌平县| 花莲市| 荣成市| 札达县| 佳木斯市| 仁寿县| 左权县| 会东县| 尼勒克县| 耿马| 江口县| 河津市| 清河县| 墨竹工卡县| 获嘉县| 大足县| 洛隆县| 兴隆县| 赣榆县|