Mit iBatis habe ich mich noch nicht beschäftigt, aber immerhin kann man Hibernate ja auch ein paar Dinge vorgaukeln, denn beispielsweise bei versionierten Daten greift man im Normalfall immer mit dem aktuellen Datum als Bezugspunkt zu, so dass im Regelfall hier nicht viele Probleme sind. Gerade Versionierung kann man hinter Views mit relativ wenig Aufwand verstecken, ohne tief in Hibernate einzusteigen. Hierbei ist es dann sogar egal, wer auf welche Art auf diese versionierten Daten zugreift, sofern er vorher eben dem "System" seinen Bezugspunkt mitgeteilt hat. Ich habe das hier mit einem Kollegen so implementiert, dass wir in der Lage sind, ein beliebiges relationales Schema so zu transformieren, dass es dem schon bestehenden Code untergeschoben werden kann.
Man muss halt wissen, was man tut. Wenn man Hibernate etwas "vorgaukelt", muss man sich im klaren sein, dass dies an anderer Stelle zu Problemen führen wird. Aber wenn man eine Sache zu Ende denkt, dann geht das schon ganz gut. Aber man muss halt wirklich wissen, was man tut...
Was ich mir noch von einem O/R-Mapper wünschen würde ist, dass er die Objekte in ein Meta-Modell abspeichern kann. Bisher habe ich das noch von keinem Mapper gesehen.