《Java EE網際網路輕量級框架整合開發》入門與技術基礎
1.Hibernate和Mybatis的區別
Hibernate不需要編寫大量的SQL,就可以完全對映,同時提供了日誌、快取、級聯(級聯比Mybatis強大)等特性,此外還體用HQL對POJO進行操作,致命缺陷是由於無須SQL,當多表進行關聯超過3個時,通過Hibernate的級聯會造成太多的效能的丟失,並且無法使用儲存過程。
Mybatis可以自由書寫SQL,支援動態SQL、處理列表、動態生成表名、支援儲存過程。缺陷是需要自己編寫SQL和對映規則,另外支援的工具也比較有限,即使有生成工具,往往也需要進一步簡化。
對於效能要求不太嚴苛的系統,比如管理系統、ERP等推薦使用Hibernate,對於效能要求高、響應快、靈活的系統則推薦使用Mybatis。
2.責任鏈模式
生活中可能會有這種場景,一個程式設計師需要請假一週,然後他的請假申請單需要經過專案經理、部門經理、人事等多個角色的審批,每個角色都有機會通過攔截這個申請單進行審批或者修改。這時我們需要提供3個攔截器,而傳遞的物件是請假申請單。
當一個物件在一條鏈上被多個攔截器攔截處理時,這樣的設計模式稱為責任鏈模式。設計方法是設計一個攔截器介面,然後給出其多個實現,最後依次攔截。攔截器的實現使用JDK動態代理,與Spring AOP的實現一樣。
3.觀察者模式
觀察者模式要同時存在觀察者和被觀察者雙方,觀察者可以有多個。在Java中,被觀察者需要繼承java.util.Observable類,觀察者需要繼承java.util.Observer類,通過在被觀察者類中呼叫其父類的addObserver方法新增觀察者,如果被觀察者發生了變化,通過呼叫父類的setChanged和notifyObservers方法通知觀察者,觀察者類只需要重寫Observer的update方法即可。
4.建造者模式
建造者模式屬於物件的構建模式。在大部分情況下可以通過new關鍵字或者工廠模式來建立物件,但是有些物件比較複雜,這時候就需要使用建造者模式將建立物件的過程分步完成,即將其寫到一個方法中,最終完成物件的建立,而不是通過複雜的構造器。