手把手教你寫一個Java的orm框架(1)

何白白發表於2019-02-20

寫之前的說明

  1. 其實吧。

    這個東西已經寫好了,地址在:github.com/hjx60149632…系列文章算是我寫的過程的總結吧。(恩系列,說明我可能會寫好久,╮(╯▽╰)╭)

  2. 現在有很多的現成的orm框架,為什麼還要自己寫一個?

    框架這種東西個人認為想要了解其中的原理,還是要自己嘗試實現一個來的比較快。我是那種不愛看原始碼的程式設計師,除非是有些地方實在沒有思路或者網上也找不到相關的文章,否則是不會去看原始碼的。懶~~~

  3. 寫這個的目的是什麼?

    現在流行的orm比如hibernate,mybatis等等,需要配置太多了,實在記不住。所以就自己寫一個自己用起來方便一點的,不需要什麼配置的,然後自己用就好咯~~~。自己寫一個框架感覺最主要的還是解決自己的問題,先讓自己用起來方便嘛~

  4. 我要實現什麼功能?

    單表的增刪該查肯定是需要的。現階段不需要支援連表查詢,因為我平常也不寫這種sql。主要的功能還是可以方便的單表增刪改查。其他複雜的功能直接使用現有的流行框架就好了,這個東西寫的時候也沒有指望太多很複雜的功能。

  5. 為什麼要寫成orm型別的呢?

    用起來方便啊~ 不用寫sql啊,我最煩寫sql了。

  6. 能不能在生產上用呢?

    看你自己咯,我是以demo形式來寫的,不好說裡面有沒有什麼大坑,恩~

    想要做成什麼樣的?

    1. 不需要太多的配置,可能的情況下只需要配置連線池就好了。

    2. 將class對映到資料庫表,增刪改查不需要寫sql。

    3. 可以使用class屬性名稱作為查詢條件。

    4. 不需要連表查詢。

    5. class對映基於註解的形式,不要寫其他的配置。

    6. 只支援mysql就好了。

    需要準備的

    1. 需要反射相關的知識。

    2. java中的自定義註解。

    3. sql的基礎知識。

    4. spring jdbc相關知識,就是jdbcTemplate。因為我不太想在寫一邊jdbc的東西。還是懶~

    大致的思路

    在class中先使用註解的形式,將class和表做一個對映關係(屬性名稱和欄位名稱的對映)。

    在對資料庫操作的時候通過反射獲取class中的相關資訊,然後根據操作型別,生成sql,最後執行sql就好了。

閱讀原文


相關文章