HibernateはEntityを中心に考えます。つまり、Javaを中心に考えるということですね。エンティティモデルとERモデルは、一致する必要はなく、それぞれでモデリングして、Hibernateが間をつなぎます。 メリットは、エンティティの設計がデータベースに引きずられることなく、そのドメインを正確に表したものになること。ほとんどのSQLは自動生成するので、SQLを書かなくてもすむこと。 デメリットは、エンティティとデータベースを個別にモデリングする必要があり、二つのモデル間でインピーダンスミスマッチが起きること。また、自動生成されたSQLの効率が悪くなるリスクがあります。継承や遅延ロードによってパフォーマンスが落ちることもあります。 フレームワークががんばっているので、機能が豊富なのですが、その分オーバヘッドがあり、学習コストがかかります。 S2DaoはSQLを中心に考えます。とはいえ