@support-rkalla wrote:
Guys from purely a technical standpoint, can some of you give your impressions of why you went with iBatis over Hibernate? Was this because the domain model was in place? How many of you decided to use iBatis even though you got to design the app from the ground up?
From my perspective, there are some very valid reasons to choose iBatis over Hibernate; besides those already mentioned (time to market, familiarity with SQL/DAO, etc). Consider an application which loads and persists very shallow object graphs (or single object instances) – which I encounter quite frequently. In this case, Hibernate is overkill; the problem maps very cleanly to discrete sql statements.
This, for me at least, is a primary factor in choosing between Hibernate and iBatis; if use cases involve large object graphs, or the domain mapping is more complex, then Hibernate is often a better choice. Hibernate’s multi-level caching strategy (and ability to more discretely evict objects from cache) are helpful as well.
Another case for iBatis over Hibernate is when dealing with legacy DBMS systems; I’ve had the dubious pleasure of having to write applications against DBMS systems with odd SQL dialects and no native JDBC drivers. I’ve also encountered situations where the client dictates a policy where all DB access MUST use stored procs; this is much easier to accomplish in iBatis than in Hibernate (at least in my experience).
My biggest complaint with iBatis is the amount of (redundant) typing involved to build an application; a gui tool would be a godsend here.
== Steve