(文章本人原創(chuàng),若轉(zhuǎn)載請注明出處)
在實際當(dāng)中的情況是系統(tǒng)數(shù)據(jù)庫中需要上傳大量照片到數(shù)據(jù)庫中,數(shù)據(jù)量比較大,且不能在界面中通過操作逐個上傳,要批量自動進(jìn)行。其實起來也比較簡單直接利用線程池將照片數(shù)據(jù)讀取成流再存入BLOB字段即可。但是在實現(xiàn)后些功能后又進(jìn)入了一些改造,實現(xiàn)了線程池、單線程、是否使用用連接池、不同數(shù)據(jù)庫等不同的配置,這樣在不同配置下可以觀察到程序性能的不同。并且經(jīng)過設(shè)計切換這些配置不需要修改程序。
使用DbAccess接口的getConnect()取得數(shù)據(jù)庫連接,DbImp和DbPoolingImp實現(xiàn)了不使用連接池和使用連接池的兩個版本。Sender接口的commitData()用來把BLOB數(shù)據(jù)寫到數(shù)據(jù)庫中,因為不同數(shù)據(jù)庫可能寫法有點不同所以這里SenderMySqlImp和SenderOracleImp分別是Mysql和Oracle的實現(xiàn)。Process接口的doProcess()是開始進(jìn)行處理的方法,無論是單線程還是多線程。因此ProcessMulti和ProcessSingle是分別使用線程池以及單線程處理的類。ConfigMgr用于取得config.properties文件內(nèi)配置信息,Logger是日志類,Helper中匯集了一些共用的靜態(tài)方法。最后DataSender是主程序的類:)