HibernateHibernate是一組目前由JBoss提供的ORM工具, 它最早在2001年就己經出現, 並且在己經超過10年的漫長的發展過程中, 累積了相當多的使用者. 元老級的Hibernate, 可說是目前在Java ORM領域中, 佔有率最高, 且最有影響力的工具之一.
MyBatis.前身為iBatis的MyBatis, 目前為Google Code底下的重要工具, 它最早同樣出現於2001年, 並且同樣擁有大量的使用者. MyBatis過去也曾以優秀的執行效能著名, 但其執行效能, 需仰賴使用自己所下SQL指令的最佳化, 而且需要自訂Mapper的間接成本, 也會使得它在執行簡單的操作時, 效能稍有減損.
Eva 與其它工具的操作效能比較我們建立了一組簡單的測試程式, 用以測試Eva_ORM與Hibernate與MyBatis, 這三種工具其最基本的物件, 增, 刪, 改, 查, 操作效能. 被我們所測試工具的版本分別為, 最新的Beta版Eva_ORM, 最新的正式版Hibernate4.1.7, 最新的正式版本MyBatis3.1.1 而關於可執行的測試程式, 請點擊下面三個圖示去下載.
除了內定connection pool的選擇不同外, 我們對於測試的要求為, 去除掉載入工具時所花的時間, 雙方僅量使用同樣的參數, 例如fetchSize, batchSize, 與相同的資料量, 操作相同的資料庫, 我們這裡使用的是in-memory database HSQLDB, 去測試相同的行為. 而且我們是使用 Hibernate 的 StatelessSession 物件去做測試, 三方都不使用任何cache, 最後, 在左方的圖表中呈現了我們自己的測試結果.
測試的結果顯示, Eva_ORM在新增, 與查詢資料時具有效能上的優勢, 而查詢又是資料庫在使用上, 最多變化與最常被使用的操作. 所以我們對這樣的測試結果也感到滿意. 而雖然Eva_ORM在物件刪除與更新的效能比較中落後, 但我們也必須額外指出, Eva_ORM 與 Hibernate 與 MyBatis 的update與delete方法有些許不同.
|