I evaluated iBATIS for a large project awhile back, but I found it to be less flexable than other ORM tools.
In the end I choose Hibernate. Hibernate alows you to structure your javaclasses and their relationship to the database tables in just about any way you can imagin. More than one java class can be used to represent one table, or the other way around if you want.
This can be used as an object oriented solution in its self.
Look up "finely grained domain models".