i BATIS works extremely well in an enterprise database environment. It has a
number of features that make it ideal for working with complex database designs
and large data sets. i BATIS also works well with multiple databases and does not
assume that any type of object is coming from only one database. It also supports
complex transactions that require multiple databases to be involved in a single
transaction. Furthermore, i BATIS isn't only useful for online transactional systems,
but works very well for both implementing reporting and integration systems.
If you've been working with software for any length of time, you've no doubt heard
of the “build versus buy” debate. That is, should we build our own solution to a busi-
ness problem, or buy a package that claims to solve the problem already. Often the
cost is about the same (otherwise there would be no debate), but the real trade-off
is between time to implement and the fit to the problem. Custom-built software can
be tailored to an exact fit to business need, but takes more time to implement. Pack-
ages can be implemented very quickly, but sometimes don't quite meet every need.
For that reason, when a choice is made to buy a package, businesses often decide
that they can get the best of both worlds by digging into the proprietary database
of the software to “extend” it just for the features that are missing.
We could discuss the horror stories of such a scenario, but it's probably better
just to know that such proprietary databases were likely not meant to be touched
by third parties. The designs are often full of assumptions, limitations, nonstand-
ard data types, and other warning signs that can be easily read as “Enter at Your
Own Risk.” Regardless of the warning signs, businesses will do amazing things to
save a few dollars. So software developers get stuck with navigating the jungle that
is the proprietary database.
i BATIS is an excellent persistence layer for interfacing with proprietary data-
bases. Often such databases allow for read-only access, which you can feel confi-
dent about when using i BATIS because you can restrict the kinds of SQL that are
run. i BATIS won't perform any magical updates to the database when they aren't
expected. If updates are required, proprietary databases are often very picky
about how the data is structured. i BATIS allows you to write very specific update
statements to deal with that.
If ever there were a bane of a modern object-oriented developer's existence, it
would be the legacy database. Legacy databases are generally the prehistoric
remains of what was once an enterprise database. They have all of the complexities,