App下載

編程語言的數(shù)據(jù)庫操作進(jìn)階——數(shù)據(jù)庫框架

猿友 2021-05-27 15:21:00 瀏覽數(shù) (3269)
反饋

當(dāng)我們第一次使用簡單的數(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ū)動用起來不算復(fù)雜。一切都是那么美好,然而他不知道他的噩夢即將來臨。

問題初現(xiàn)端倪

張三在寫 JDBC 的時候因為對 SQL 的掌握不是那么熟練,導(dǎo)致數(shù)據(jù)庫連接部分經(jīng)常出現(xiàn)一些小的錯誤。不過好在他有個厲害的朋友李四可以幫他進(jìn)行 SQL 的排錯和優(yōu)化,張三的開發(fā)之路還算順利。

當(dāng)需求增加時

由于項目的需求增加,對數(shù)據(jù)的讀寫操作也隨之增加,張三的工作量也隨之增加了很多。而且因為 SQL 掌握不好的原因,每次在寫 JDBC 代碼的時候都需要更多的時間來進(jìn)行調(diào)試。

結(jié)局與分析

在一周的工作總結(jié)中,老板對張三相當(dāng)不滿。因為他的項目里面有一大部分都是 JDBC,而且很多地方有重復(fù)操作。因為把很多時間浪費在數(shù)據(jù)庫操作上,張三項目的業(yè)務(wù)代碼進(jìn)展緩慢。

張三實在是冤,因為他不知道數(shù)據(jù)庫框架的存在,而在 JDBC 上死磕,導(dǎo)致了上面的問題。那么,什么是數(shù)據(jù)庫框架?數(shù)據(jù)庫框架其實可以看成一個類似管家的存在,只要你需要數(shù)據(jù),他就幫你進(jìn)行數(shù)據(jù)庫操作。比如 ORM 框架。ORM 框架通過對象關(guān)系模型實現(xiàn)對數(shù)據(jù)庫的操作,利用對象與數(shù)據(jù)庫之間的映射結(jié)構(gòu)來自動生成 SQL。因為 SQL 是自動生成的,所以在使用該框架的時候甚至可以不用寫 SQL(張三瞬間覺得自己干了一些本來可以不用干的活)。

使用了 ORM 框架后,張三不需要關(guān)心 SQL 的操作,也不用在意 SQL 的優(yōu)化,業(yè)務(wù)進(jìn)展速度直接翻了好幾番。

常見的 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è)置參數(shù)以及獲取結(jié)果集。而且使用起來輕便靈活。因為可以自行定制 SQL 語句,所以在效率上比 ORM 框架更高。

小結(jié)

數(shù)據(jù)庫框架的出現(xiàn),讓繁瑣的數(shù)據(jù)庫操作變得更加簡潔,也讓開發(fā)者無需花費過多的精力在 SQL 的編寫和優(yōu)化上。因為數(shù)據(jù)庫操作繁瑣的你確定不來一份?

數(shù)據(jù)庫框架學(xué)習(xí)手冊列表:

Hibernate學(xué)習(xí)

Mybatis學(xué)習(xí)

Django模型


0 人點贊