To si nemyslím, že je problém, mám pro to úplně jasné řešení.
Kolikrát potřebujete mít 1:1 vztah Objekt-Tabulka? V naprosto zanedbatelném počtu přípádů. Vždy používáte složené dotazy, které jsou v podstatě kočkopes. Výstupem těch dotazů je ResultSet a k němu odpovídající ResultSetModel. Ten model nepředstavuje žádnou tabulku, představuje výstup z SQL dotazu, k němu je vztažen, a obsahuje mix informací z různých tabulek.
Ještě jednou, když máte trochu složitější databázi, tak vaše Objekty jsou SQL-orientované a né Tabulkově-orientované. Samostatné tabulky vás až tak nezajímají.
Tady mě právě sere ten Hibernate, já nikdy nejsem zvědavý na načítání celých tabulek, chci mít raději SQL-orientovaný ResultSetModel. Navíc tím dostanou krásnou svobodu čistého SQL.
Takže u Selectů je to jansé, tam mi přijde že jasně vede přístup přes JDBC.
Co se týče insertování nových záznamů, taaak....... tam opět moc nevidím problém, proč si myslíš, že se to zesložití? Vždyť ty nepotřebuješ komponovat Model třídy jako u Hibernate, to přece vůbec není nutné. Vždy sám v kódu víš, jestli k nově vkládanému řádku v tabulce A chceš přidat FID z již existujícího řádku v B, nebo chceš přidat i nový řádek do B a jeho id použít v A.
Taky co se týče updatu, tak tam taky snad nikdy nepořebuješ super-univerzální možnost updatovat kdykoliv cokoliv tak jak to umí Hibernate, v praxi vždycky potřebuješ z hlediska business logiky updatovat jen pár sloupečků v tabulce, na to si case-to-case uděláš nevou metodu do Daočka.
Problém je, že ty chceš, asi ze zvyku, nutně dělat ORM mapování, vč. reálných vazeb mezi Modely, tak jak to má hibernate. A TO JE PRÁVĚ to, co způsobuje ty problémy, u kterých skončíš tak, že hibernate použiješ rovnou. Ale proč to kompletní ORM chceš dělat, co ti to přinese? To přece vůbec není nutné, neumím si představit nějakou podstatnou výhodu.
Mě přijde SQL svět mnohem přehlednější a jasnější, a když dlám aplikaci, tak přece nad ním nechci dělat tlustou nadstavbu. Vždyť SQL to je asi ta nejsolidnější technologie co tu je, spolu třeba s REGEXem. Proč bych nad tím chtěl dělat nějakou tlustou nadstavbu je jedno v čem.
Mě přijde výhoda Hibernata-like frameworku, když děláš v nějaké totální žumpě s pomalým intranetem, kde přístup do soukromé databáze tvé komponenty je na s vysokou latencí a ty si tu svou databázi nemůžeš dát na stejný stroj kde ti ta tvá komponenta běží, ikdyž ji vlastně ta komponenta vlastní. To jsou ty typické Oracle sračky, kde je jedna obří databáze a ty v ní máš svého Usera. V ten moment ti nezbývá než si tu databázi kvůli latencím cachovat, protože by to jinak bylo pomalé jako prase. A tady může třeba ten Hibernate pomoct.