下面是IBatis和Hibernate的比较,多年前做了个presentation,现在拿出来看一下:<!-- [if gte mso 9]><xml>
- License
– Hibernate: LGPL
– Ibatis: Apache2.0
- Learning curve
– Hibernate: Higher learning curve
– Ibatis: Shorter learning curve
- l For a new system, full control for it
– Hibernate: is easy to develop to a complete new system
– Ibatis: is suitable for legacy database, accessing any third party DB or poor Database design
- l OR mapping
– Hibernate: complete mapping table with object, no need to write any SQL
– Ibatis: SQL mapping, need to be familiar with SQL
- l Database type
– Hibernate: database type independent by define dialect of DB
– Ibatis: database type related
- l Store procedure
– Hibernate: is weak to handle the store procedure
– Ibatis: is complete SQL control, so does store procedure
- l If one column of the table is modified
– Hibernate: is easy to maintain, only need to modify property of the column is OK
– Ibatis: All the SQL related with the column need to be modified
- l Work efficiency
– Hibernate: far more higher,no need to write SQL at all
– Ibatis: low efficiency
- l Product level
– Hibernate: Richer documents, many supported vendors and complete product level
– Ibatis: less document, low work efficiency
- l For huge data system
– Hibernate: SQL is automatically by Hibernate, is hard to optimize SQL
– Ibatis: can attain the goal by optimize SQL
- l Cache
– Hibernate: is easy to use cache
– Ibatis: configuration is more difficult than Hibernate
<cacheModel id="lruCache" type="LRU" serialize="true" readOnly="false">
<property name="reference-type" value="WEAK"/>
<flushOnExecute statement="insertAccount"/>
<flushOnExecute statement="updateAccount"/>
<flushOnExecute statement="deleteAccountById"/>
</cacheModel>
<select id="selectAccountById" parameterClass="int" resultClass="Account" cacheModel="lruCache"> select ACC_ID as id, ACC_FIRST_NAME as firstName, ACC_LAST_NAME as lastName, ACC_EMAIL as emailAddress from ACCOUNT where ACC_ID = #id#
</select>