1. 程式人生 > >關於mybatis、Hibernate、Jpa的一些經驗之談

關於mybatis、Hibernate、Jpa的一些經驗之談

工作兩年,也有了一點小小心得,閒暇時將自己平時遇到的一些問題思考寫下來,希望有志同道合的朋友一起參與討論,共同進步。

網上已經有很多關於mybatis、hibernate、jpa的基本知識介紹了,這些我也不打算全部複製貼上下來,我主要是想講一下自己的想法和理解,有什麼錯誤的地方請大家指正,謝謝!

首先講下jpa,在之前的開發工作中用的最多的就是mybatis和hibernate,在最近的一個專案中才用到jpa。算起來,在java開發中,這方面應該是算有經驗的吧(不清楚其他公司的情況>_<)。

jpa不是框架,是一種規範,一種約定。

在關聯查詢中,使用jpa真的很方便,只要你在實體類中做好關聯對映,基本的增刪改查操作起來簡單的飛起,都不用寫sql。

看了一些文章,說hibernate是jpa的實現,jpa能做了hibernate都繼承了,還添加了一些自己的特色(具體是什麼,也不是很理解,希望有會的給我回兩句,謝謝!),就是封裝了jpa的註解什麼的。

但是在微服務中,使用hibernate有點問題:比如1在資料庫中有一張user表,在微服務A中想要user物件直接傳送給微服務B,那麼B服務一定要有關於user表的對映關係,不然會報錯(具體的異常,也不是很清楚了..jj),有時在微服務B中還不能將微服務A傳送過來的user轉成自己的user物件。因此微服務之間的通訊,我們不會直接將物件給另一個微服務,而是使用json字串的方式傳參。所以,我覺得在微服務中不是很適合使用hibernate。

講下mybatis,我覺得mybatis最大的特色就是可以在xml中寫sql,雖然也可以用註解的方式實現,但是我覺得在xml中寫sql是最好的,理由:1、在註解中寫sql,造成sql與java程式碼的耦合度過強;2、如果有dba(絕大部分公司沒有,我公司也沒有..),可以將xml直接發過去,給他們優化,想想如果是用註解寫,怎麼搞?3、可讀性方面,本人覺得寫在xml上,讀起來比較方便,特別是複雜的sql;4、當專案開發完成後,一般程式設計師都會轉到其他專案,一段時間後,sql出現bug,再回來看時,要回憶起來也需要不少時間。所以,我覺得用mybatis最好就是寫xml。

在新專案開始時,一般都會進行技術選型,大公司的情況我不是很清楚,我講一下我公司的情況。我公司主要是給南方電網做外包工作的,一般的情況下是甲方出方案,我們開發,有時甲方也會有架構師、高階程式設計師來參與,當然我公司也是有背景的,合作專案基本都是我們做主導。有我們主導的專案,在技術上的選中有很大的靈活性,基本都是公司的大牛覺得什麼技術好就用什麼(當然,我還沒有到這種層次,在路上...),有空也會向他們請教。主要是根據業務情況來現在使用哪種技術,比如在資料庫框架方面,如果你的專案偏向業務的,需要關聯查詢,使用jpa就方便很多,用mybatis就要手動改xml,太麻煩了。

最後,小弟讀書少,有什麼錯誤之處,請指出一二,謝謝。