999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

設計模式在Java 數據庫操作組件中的應用

2019-04-26 05:22:22武宗品
電子技術與軟件工程 2019年6期
關鍵詞:數據庫設計

文/武宗品

信息化系統包含信息的采集、處理、分析和統計,在此過程中,需要進行信息的持久化存儲。信息系統當前大多數使用關系型數據庫來存儲信息。

根據TIOBE 排行榜,Java 依然是排名第一的開發語言,因此公司使用Java 開發信息化系統。面向對象是Java 的一大特點,在使用面向對象方法進行系統開發時,需要用實體對象來表示所處理的信息。因此,就需要不斷的對信息進行關系型數據和實體對象的互轉,即所謂的對象關系映射(Object-Relational Mapping,簡稱ORM)。

目前有多種框架幫助開發者簡化ORM 的開發,例如Hiberante 和iBatis。這些框架有諸多優勢,但同時也存在天然缺陷:由于是在程序運行時才會生產數據庫操作,導致在開發時難以調試,難以進行SQL 優化。

針對上述問題,本文提出并實現了一個輕量級的Java 數據庫操作組件——DatabaseOperator,該組件為開發人員提供一個簡單、高效、方便調試和優化的數據庫操作方法。由于可以自行控制SQL 語句,并且無需關注JDBC 的各種狀態維護,為開發人員提供了更大的靈活性,減輕了許多冗余代碼。該組件已經在公司開發的多套系統中使用。

1 技術概述

數據庫操作組件DatabaseOperator 為了保留調試和SQL 優化的特性,選擇采用JDBC來直接操作數據庫。同時,為了簡化開發人員的操作,降低代碼冗余,減少開發人員對數據庫連接的維護工作,組件將采用狀態模式和觀察者模式這兩個設計模式作為設計指導。

1.1 設計模式

Erich Gamma 等人給出了設計模式的定義,可以這樣去理解它:設計模式和語言無關,通常是一種針對某類問題或場景,將變化的部分抽離出去,將不變的部分保留下來,最終形成的一個解決問題的套路或思考范式。本小節將對用到的兩個設計模式進行簡單介紹。

圖1:標準數據庫操作

圖2:數據庫操作狀態

1.1.1 狀態模式

該模式的定義:狀態模式允許對象在內部狀態改變時改變它的行為,對象看起來好像修改了它的類。普遍的說,當要處理的事情有不同的狀態,并且在不同的狀態有不同的行為,狀態與狀態之間有明確的轉換觸發條件,對于存在這種情況的可以使用狀態模式來指導設計,規范代碼結構。

1.1.2 觀察者模式

該模式的定義:觀察者模式定義了對象之間的一對多依賴,這樣一來,當一個對象改變狀態時,它的所有依賴者都會收到通知并自動更新。普遍的說,當要處理的事情有一個明確的第三方,該第三方需要獲取相關對象的行為,并在全部或者某些行為時第三方有自己的行動,對于存在這種情況的可以使用觀察者模式來指導設計。

1.2 JDBC

Java 數據庫連接,(Java Database Connectivity,簡稱JDBC)是Java 語言中用來規范客戶端程序如何來訪問數據庫的應用程序接口,提供了諸如查詢和更新數據庫中數據的方法。

2 設計與實現

本小節首先介紹標準的數據庫操作方法,然后通過分析,設計出一套簡潔高效的數據庫操作組件并進行實現。

2.1 標準數據庫操作

如圖1所示,是一個Java 上的標準數據庫操作步驟:①定義變量;②連接數據庫;③業務操作(本例是一個最簡單的業務查詢操作);④處理業務異常;⑤關閉數據庫連接。

2.2 分析與設計

上節所介紹的標準數據庫操作中,對于開發人員需要關注的只有“③業務操作”這一部分,可以看到其余都是無需關注的,如何抽離那些無需關注的而只保留需要關注的部分是實現組件的關鍵。

通過分析,可知在操作數據庫的時候,經歷了如下幾個步驟:參數初始化;連接數據庫;處理業務;完成并關閉。在每一個步驟中,都會有不同的操作,并且步驟之間的轉換都是通過固定的操作來完成的。針對這種場景,使用“狀態模式”來進行設計:將數據庫操作的每一步都看作一個狀態,在獨立的狀態中,只需關注當前狀態要做的事情,狀態與狀態之間的轉換,交給幾個專門的處理方法來完成即可。圖1所示的數據庫操作只是基本的業務查詢操作,考慮到還有批量操作、存儲過程操作和事務操作,最終設計的狀態機如圖2所示:init(初始狀態);transaction(事務狀態);sqlDone(業務狀態);callable(存儲過程狀態);batch(批量業務狀態)。觸發狀態轉換的操作有:startTransaction,開啟事務;commit,提交事務;setSql,設定數據庫操作語句;setPS,動態SQL 參數;execute/query,增刪改查;setCallable,設定存儲過程;setCallableHandler,設定存儲過程回掉;addSql,添加批量SQL;addBatch,添加批量操作;executeBatch,執行批量操作;end,結束操作。

圖3:實現

通過分析,數據庫在操作的過程中,為了讓開發人員專注于業務,而無需關注和維護當前數據庫連接的建立與關閉,需要有第三方來監控現在的操作狀態,并在操作結束時關閉數據庫連接、回收對象。針對這種場景,使用“觀察者模式”來指導設計:當開始進行數據庫操作的時候,監控對象訂閱數據庫操作對象的通知,數據庫操作結束時發出通知,監控對象負責完成關閉數據庫連接和回收對象的工作。

2.3 實現

根據分析與設計,數據庫操作組件的實現如圖3所示。

開發人員在使用該組件的時候,需要操作圖1所示的業務時,實際代碼如圖4所示。由此可見,不僅保留了SQL 的可調式性,也大大減少了開發的工作量。

3 總結

在結合了狀態模式和觀察者模式之后,對JDBC 進行了重新的封裝,完成了DatabaseOperator 數據庫操作組件的開發。使用該組件,無需引用大量的框架,能夠快速搭建信息系統,簡化代碼工作量,保持SQL 可調式,確保數據庫優化的可控性,為公司多個項目的開發提高了效率,降低了出錯率。同時,在實踐中也發現該組件還有可以不斷優化的地方,例如:與數據庫的連接除了自己創建之外,還可以交給數據庫連接池來進行管理,從而提高連接效率;數據查詢后的結果,可以使用反射機制將查詢后的結果直接轉變成對象。

圖4:使用組件后的數據庫操作

猜你喜歡
數據庫設計
何為設計的守護之道?
現代裝飾(2020年7期)2020-07-27 01:27:42
《豐收的喜悅展示設計》
流行色(2020年1期)2020-04-28 11:16:38
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
數據庫
財經(2017年15期)2017-07-03 22:40:49
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
主站蜘蛛池模板: 亚洲中文制服丝袜欧美精品| 亚洲人成网址| 播五月综合| 高清大学生毛片一级| 欧美亚洲综合免费精品高清在线观看| 在线欧美国产| 思思99思思久久最新精品| 国产区免费精品视频| 国产日本一线在线观看免费| 乱系列中文字幕在线视频| 国产区91| 亚洲女人在线| 欧美亚洲欧美区| 亚洲资源在线视频| 免费一级毛片| 91精品最新国内在线播放| 超清无码一区二区三区| 国产一区二区网站| 无码av免费不卡在线观看| 亚洲乱码视频| 欧美成人精品高清在线下载 | 人妖无码第一页| 毛片网站在线看| 亚洲美女久久| 97国产一区二区精品久久呦| 国产99视频在线| 欧美激情福利| 欧美精品黑人粗大| 中文国产成人精品久久| 亚洲精品视频免费| 成人无码一区二区三区视频在线观看| 日韩av手机在线| 国产视频自拍一区| 亚洲欧美日韩成人高清在线一区| 中文字幕av无码不卡免费| 91人妻在线视频| 漂亮人妻被中出中文字幕久久| 日韩A级毛片一区二区三区| 四虎永久免费网站| a天堂视频| 三上悠亚在线精品二区| 成人午夜网址| 免费一级成人毛片| 午夜一级做a爰片久久毛片| 国产在线精彩视频二区| 黄片在线永久| 欧美亚洲综合免费精品高清在线观看| 呦系列视频一区二区三区| 亚洲第一视频免费在线| 成人免费午夜视频| 国产区91| 国产91在线|日本| 看国产一级毛片| Jizz国产色系免费| 久久久受www免费人成| 国内精自视频品线一二区| 毛片网站观看| 亚洲无码37.| 日本www在线视频| 欧美一区二区精品久久久| 国产在线视频二区| 中文国产成人精品久久一| 鲁鲁鲁爽爽爽在线视频观看| 欧美日韩北条麻妃一区二区| 国产高清不卡视频| 亚洲人成网站色7777| 日韩经典精品无码一区二区| 亚洲综合九九| 99视频有精品视频免费观看| 欧美亚洲国产精品久久蜜芽 | 啦啦啦网站在线观看a毛片| 久久精品国产一区二区小说| 久久伊人操| 一级爆乳无码av| 99re热精品视频中文字幕不卡| 伊人久久婷婷| 国产一在线观看| 欧美精品在线看| 午夜啪啪福利| 国产交换配偶在线视频| 久久精品国产国语对白| 一级毛片在线播放|