回覆列表
-
1 # 籠行千里
-
2 # 無忌實驗室
逆向工程簡介
什麼是逆向工程:
mybatis需要程式設計師自己編寫sql語句,mybatis官方提供逆向工程,可以針對單表自動生成mybatis執行所需要的程式碼(mapper.java、mapper.xml、pojo…),可以讓程式設計師將更多的精力放在繁雜的業務邏輯上。
企業實際開發中,常用的逆向工程方式:由資料庫的表生成java程式碼。
之所以強調單表兩個字,是因為Mybatis逆向工程生成的Mapper所進行的操作都是針對單表的,也許你可能會覺得那這就有點雞肋了,但是在大型專案中,很少有複雜的多表關聯查詢,所以作用還是很大的。
mybatis逆向工程非常強大,可以大大提高工作效率,而且也不會出現資料庫表與實體類對不上號的情況。用eclipse外掛更簡單一點,不用自己寫執行的程式碼,但是自己手動也不算麻煩,而且不依賴了開發工具。
為什麼要使用Mybatis逆向工程?
我們之前說過MyBatis是一個"半自動"的ORM框架,SQL語句需要開發者自定義,這樣做的好處是程式碼更加靈活,缺點是如果參與業務的表太多,每張表的業務都需要自定義SQL,建立實體類,DAO介面,難免會很麻煩。所以我們需要使用逆向工程,讓MyBatis自動生成表對應的各種資源,大大減少我們的工作量。
Mybatis逆向工程有什麼不足?
以前沒怎麼用過mybatis,只知道與hibernate一樣是個orm資料庫框架。隨著使用熟練度的增加,發現它與hibernate區別是非常大的,結合至今為止的經驗,總結出以下幾點:
1. hibernate是全自動,而mybatis是半自動。
hibernate完全可以透過物件關係模型實現對資料庫的操作,擁有完整的JavaBean物件與資料庫的對映結構來自動生成sql。而mybatis僅有基本的欄位對映,物件資料以及物件實際關係仍然需要透過手寫sql來實現和管理。
2. hibernate資料庫移植性遠大於mybatis。
hibernate透過它強大的對映結構和hql語言,大大降低了物件與資料庫(oracle、MySQL等)的耦合性,而mybatis由於需要手寫sql,因此與資料庫的耦合性直接取決於程式設計師寫sql的方法,如果sql不具通用性而用了很多某資料庫特性的sql語句的話,移植性也會隨之降低很多,成本很高。
3. hibernate擁有完整的日誌系統,mybatis則欠缺一些。
hibernate日誌系統非常健全,涉及廣泛,包括:sql記錄、關係異常、最佳化警告、快取提示、髒資料警告等;而mybatis則除了基本記錄功能外,功能薄弱很多。
4. mybatis相比hibernate需要關心很多細節
hibernate配置要比mybatis複雜的多,學習成本也比mybatis高。但也正因為mybatis使用簡單,才導致它要比hibernate關心很多技術細節。mybatis由於不用考慮很多細節,開發模式上與傳統jdbc區別很小,因此很容易上手並開發專案,但忽略細節會導致專案前期bug較多,因而開發出相對穩定的軟體很慢,而開發出軟體卻很快。hibernate則正好與之相反。但是如果使用hibernate很熟練的話,實際上開發效率絲毫不差於甚至超越mybatis。