java的持久化(JDBC ,mybatis, Hibernate, SpringJDBC)之間的區別
先來說說各自的特點,首先是JDBC,這個是Java語言提供的規範,主要就是定義一些介面和通訊類,介面定義好之後,各個資料庫廠商來提供具體的實現,比如Oracle,Mysql等,這些廠商都有自己的JDBC具體實現,當然,我們也可以自己實現一個,不過成本比較高。對於JDBC ,個人認為主要的特點是原生,效率高(用得好的情況下),使用起來也比較靈活 ,缺點呢也很明顯,開發起來程式碼比較羅嗦,可擴充套件性不夠好。
然後是ibatis,現在已經改名為mybatis,這是一個半自動化的ORM框架,需要我們自己寫SQL語句,主要特點是把SQL語句和Java的Field做對映,通過parameterMap和resultMap來做對映,所以,ibatis使用起來也是比較靈活的,可以自己寫Sql,並且如果你家公司有高手DBA,交給他來優化或者寫SQl也是很不錯的選擇,缺點呢,由於Sql語句和具體的資料庫相對應,換了資料庫的話,那麼Sql語句需要重寫過或則修改過。
和ibatis對比的比較多的就是hibernate了,這可以算是一個自動化的ORM框架,應為他自帶HQL語句直譯器,利用這個特性,開發人員可以認真寫HQl語句就可以了,只要在不同的資料庫中使用不同的驅動,這樣就可以比較方便的在不同的DB上切換或者移植 ,但是有些比較複雜的SQL語句在轉換為HQL語句的時候還是比較有難度的,如果沒有hibernate開發高手,個人覺得還是使用ibatis比較好
spring 的核心思想是IOC和AOP,但是為了和其他框架競爭,Spring自己也實現了一套JDBC的東西,使用的過程中也可以簡化一些開發的程式碼量,並且Spring本身對事物提供強大的支援能力,這是我覺得他比較有特色的地方。
所以,一般專案在開發之前首先要搭框架,選擇什麼樣的持久化方案要根據自己團隊的情況來定,而不是別人說什麼好就用什麼。