俺の経験から言わせてもらうと、
RDBから、本当にOO的な(継承やら多態やら複雑な関連やらいろいろ使う)
個々のJavaのオブジェクトとのマッピングはほとんど
不可能なんじゃないかと思います。
もう少し粒度を大きくして、コンポーネントの単位でものを考えた方が良いと思います。

例えば銀行のアプリなんかだと、
口座クラスと、取引明細クラスを作って、それぞれ口座テーブルと明細テーブルに
マッピングするような作りじゃなくって、
口座管理コンポーネントとして一纏めで扱います。
コンポーネントの中は、SQLガリガリだろうと、なんでもオッケー。
その代わり、他のコンポーネントからは、絶対にインターフェースを通してしか
アクセスさせない。これで、情報隠蔽できます。