返信機能をCayenneで表現すると

メッセージを投稿する所まで出来上がりましたので、次に返信を付ける機能を加えてみたいと思います。
メッセージに対して返信することを実現するためには、MessageオブジェクトのtoChildrenリレーションに返信Messageオブジェクトを加えてあげるという事で実現できます。


これをCayennne的には、このように表現します。

Message resMessage; //返信メッセージ
Message parentMessage; //親(返信もと)メッセージ

parentMessage.addToChildren(resMessage);

こうする事によって、resMessageオブジェクトはparentMessageオブジェクトの子オブジェクトとして登録されます。
SQL的には、resMessageのparentIdにparentMessageのプライマリキーが入る事を意味します。
こういったSQLにまつわる事はCayenneが自動で行ってくれますので、あくまでオブジェクト単位でリレーションを考えれば良い事になります。
概してO/Rマッピングの強みとしてはこの辺でしょうね・・・。
もちろん、WebObjectsのEOFでも同様に出来ますし、HibernateCastorでもほぼ同様です。