offer 79
看着spring in action 以往的 struts 2 in action 也是很精彩,hibernate in action 的書籍也找到了不少,查找了很多關於 in action 系列圖書的資料
webWork, struts 2 實在 webWork 和struts 1 之上的一個框架,ValueStack 和 OGNL 以及 Interceptor 都來源於 webWork
1. iBATIS : 什麼是 iBATS 個人理解是 , hibernate是1 orm ,iBATIS是面向SQL,所以靈活性比hiberante高,不使用hql
iBATIS 技術出現的原因: JDBC的prepareStatement編寫太冗長,SQL語句和程序邏輯高度耦合,Java的面向對象和 SQL的面向數據表衝突。
iBATIS 是什麼: 面向SQL ,通過兩個xml文件描述了 實體類和數據庫表之間的影射,在XML中使用SQL在控制查詢。
iBATIS 的使用場景:iBATIS最好是用在你需要全面地控制SQL的時候,在需要對SQL查詢做微調的時候也很有用。當你在應用和數據庫設計兩方面都有完全的控制權的時候,就不應該使用iBATIS,因爲在這樣的情況下,應用可能會做出修改以適應數據庫,或是反過來。在這種情形中,你可以構建一個完全的對象-關係應用,其他的ORM工具更適於使用,因爲iBATIS較爲以SQL爲中心,其通常被稱作反轉的——功能齊全的ORM工具生成SQL,而iBATIS直接使用SQL。iBATIS也不適合於非關係型的數據庫,因爲這類數據庫不支持事務和其他iBATIS用到的鍵特性。這段話說得賊有水平
iBATIS 的使用實例:
2. Hibernate :
Reason : 使用了Hibernate後,你就無需擔心數據庫的改變,因爲手工修改SQL腳本文件的工作已被免除。Hibernate使得對象-關係映射變得簡單起來,它的方法是在一個XML文件中映射元數據,該文件定義了需要映射到某個特定類上的數據庫中的表。Hibernate在映射這一塊上做得很好,就是說實體類上的屬性與
數據表可以不一致,只要映射正確就行了。
What : Hibernate的主要編程接口有4個,SessionFactory,Session,Transaction,Query。通過配置文件工作。hibernate實例的三種狀態:transient,persistent,detached。
Where : Hibernate最適合用來作爲端到端的OR映射的手段。其提供了一個完整的ORM解決方案,但但是不會讓你控制查詢。對於那些對應用和數據庫兩者都有完全的控制權的情況來說,Hibernate是一種理想的解決方案。在這類情況中,你可以修改應用來適用數據庫,反之亦然,在這些情況下你可以使用Hibernate來構建一個全對象-關係應用。對於不太熟悉SQL的面向對象編程者來說,Hibernate是最佳選擇。說得非常清晰,在大公司的合作中,使用iBATIS而不是hibernate的原因是什麼?編程部門可能沒有對數據庫的完整控制權,通過iBATIS的SQL微調來控制。
Example :
3. Java Persistence API 符合Java EE 5規範的一門技術,與Hibernate能很好集成使用
Reason :
What :
Where :
Example:
question : POJO 和 JavaBean的區別
4. 三種持久化技術的比較
完整的ORM解決方案: 像Hibernate和JPA一類的傳統的ORM解決方案應該用來作爲一種完全的對象-關係映射手段。Hibernate和JPA直接把Java對象映射到數據庫表上,而iBATIS則是把Java對象映射到SQL查詢的結果上。在某些應用中,領域模型中的對象是根據業務邏輯來設計的,可能不完全與數據模型匹配,在這種情況下,iBATIS是合適的選擇。
對SQL的依賴: 使用存儲過程,可以選擇iBATIS, 希望減少SQL的依賴,可以使用hibernate來生成高效率的SQL查詢語句
5. 結論:
原文結論:
iBATIS、Hibernate和JPA是用於把數據持久到關係數據庫中的三種不同的機制,每種都有着自己的優勢和侷限性。iBATIS不提供完整的ORM解決方案,也不提供任何的對象和關係模型的直接映射。不過,iBATIS給你提供了對查詢的全面控制權。Hibernate提供了一個完整的ORM解決方案,但不提供對查詢的控制權。Hibernate非常的受歡迎,有一個龐大而活躍的社區爲新用戶提供支持。JPA也提供一個完整的ORM解決方案,並提供對諸如繼承和多態一類的面向對象編程特性的支持,不過它的性能則取決於持久性提供程序。
某個特定持久性機制的選擇事關所有功能特性的權衡,這些特性在本文的比較章節中都做了討論。對於大部分的開發者來說,需要根據是否要求對應用的SQL做全面控制、是否需要自動生成SQL,或僅是想要一個易於編程的完整的ORM解決方案等各方面的考慮來做決定。
寫這篇文章的肯定是一位高人,說得清晰,考慮問題詳細周到。 來自 :
iBATIS , Hibernate , JPA 哪一款更適合你
回答上面一個問題 : POJO 和 JavaBean的簡單區別
個人總結:
1 POJO : 符合Java語言規範,有一部分的 getter和 setter的類
2 JavaBean : 符合三點的POJO ,
(1)具有無參構造函數
(2) 可序列化
(3 ) 這個類的屬性使用 getter 和 setter來訪問,其他方法遵從標準 命名規範。