spring 與 事物管理

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直接使用SQLiBATIS也不適合於非關係型的數據庫,因爲這類數據庫不支持事務和其他iBATIS用到的鍵特性。這段話說得賊有水平

  iBATIS 的使用實例:


2. Hibernate  :

    Reason : 使用了Hibernate後,你就無需擔心數據庫的改變,因爲手工修改SQL腳本文件的工作已被免除。Hibernate使得對象-關係映射變得簡單起來,它的方法是在一個XML文件中映射元數據,該文件定義了需要映射到某個特定類上的數據庫中的表。Hibernate在映射這一塊上做得很好,就是說實體類上的屬性與 數據表可以不一致,只要映射正確就行了。

    What :  Hibernate的主要編程接口有4個,SessionFactorySessionTransactionQuery。通過配置文件工作。hibernate實例的三種狀態:transientpersistentdetached

    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解決方案: HibernateJPA一類的傳統的ORM解決方案應該用來作爲一種完全的對象-關係映射手段。HibernateJPA直接把Java對象映射到數據庫表上,而iBATIS則是把Java對象映射到SQL查詢的結果上。在某些應用中,領域模型中的對象是根據業務邏輯來設計的,可能不完全與數據模型匹配,在這種情況下,iBATIS是合適的選擇

   對SQL的依賴: 使用存儲過程,可以選擇iBATIS, 希望減少SQL的依賴,可以使用hibernate來生成高效率的SQL查詢語句

  

5. 結論:

    原文結論:

iBATISHibernateJPA是用於把數據持久到關係數據庫中的三種不同的機制,每種都有着自己的優勢和侷限性。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來訪問,其他方法遵從標準 命名規範。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章