當我們第一次使用簡單的數(shù)據(jù)庫連接方式(比如 python 的 pymysql 或者 JDBC)后,會有一股莫名的成就感,感覺這種操作非常的 amazing,但是再往后就會覺得數(shù)據(jù)庫連接的處理屬實繁瑣。為了將開發(fā)者從數(shù)據(jù)庫操作的噩夢中解救出來,數(shù)據(jù)庫框架誕生了。
故事的開始
程序員張三剛接觸到 java 數(shù)據(jù)庫連接(JDBC),他覺得有了 JDBC 之后他可以使用數(shù)據(jù)庫的數(shù)據(jù),而且封裝好的 java 數(shù)據(jù)庫驅(qū)動用起來不算復雜。一切都是那么美好,然而他不知道他的噩夢即將來臨。
問題初現(xiàn)端倪
張三在寫 JDBC 的時候因為對 SQL 的掌握不是那么熟練,導致數(shù)據(jù)庫連接部分經(jīng)常出現(xiàn)一些小的錯誤。不過好在他有個厲害的朋友李四可以幫他進行 SQL 的排錯和優(yōu)化,張三的開發(fā)之路還算順利。
當需求增加時
由于項目的需求增加,對數(shù)據(jù)的讀寫操作也隨之增加,張三的工作量也隨之增加了很多。而且因為 SQL 掌握不好的原因,每次在寫 JDBC 代碼的時候都需要更多的時間來進行調(diào)試。
結(jié)局與分析
在一周的工作總結(jié)中,老板對張三相當不滿。因為他的項目里面有一大部分都是 JDBC,而且很多地方有重復操作。因為把很多時間浪費在數(shù)據(jù)庫操作上,張三項目的業(yè)務代碼進展緩慢。
張三實在是冤,因為他不知道數(shù)據(jù)庫框架的存在,而在 JDBC 上死磕,導致了上面的問題。那么,什么是數(shù)據(jù)庫框架?數(shù)據(jù)庫框架其實可以看成一個類似管家的存在,只要你需要數(shù)據(jù),他就幫你進行數(shù)據(jù)庫操作。比如 ORM 框架。ORM 框架通過對象關系模型實現(xiàn)對數(shù)據(jù)庫的操作,利用對象與數(shù)據(jù)庫之間的映射結(jié)構(gòu)來自動生成 SQL。因為 SQL 是自動生成的,所以在使用該框架的時候甚至可以不用寫 SQL(張三瞬間覺得自己干了一些本來可以不用干的活)。
使用了 ORM 框架后,張三不需要關心 SQL 的操作,也不用在意 SQL 的優(yōu)化,業(yè)務進展速度直接翻了好幾番。
常見的 ORM 框架
很多編程語言都有 ORM 框架。比如說 java 的 SSH 框架中的 Hibernate 框架,就是 ORM 框架。另外 python 的 beego 框架,Diango 框架(本身是 web 框架,內(nèi)部使用了 ORM 框架),Ruby 語言的 Active Record 等等也都是 ORM框架。
另一種數(shù)據(jù)庫框架
還有另一種數(shù)據(jù)庫框架,雖然它不像 ORM 那樣完全不需要寫 SQL,但是它也能減少 JDBC 代碼,比如 java 中的 MyBatis。它是一款持久層框架。通過簡單的 XML 或者注解配置和映射原生信息,幾乎避免了所有的 JDBC 代碼和手動設置參數(shù)以及獲取結(jié)果集。而且使用起來輕便靈活。因為可以自行定制 SQL 語句,所以在效率上比 ORM 框架更高。
小結(jié)
數(shù)據(jù)庫框架的出現(xiàn),讓繁瑣的數(shù)據(jù)庫操作變得更加簡潔,也讓開發(fā)者無需花費過多的精力在 SQL 的編寫和優(yōu)化上。因為數(shù)據(jù)庫操作繁瑣的你確定不來一份?
數(shù)據(jù)庫框架學習手冊列表: