ログ日記

作業ログと日記とメモ

Slim3 + GWT の ModelRef など

昨日書いた *1 ときにはModelRefはGWTで使えないと思っていたんだけど、modelRef.getKey().getName() は実行出来る。
ModelRefはタイプセーフを実現するためのクラスで、実際にはKeyを持っている。


そして普通にGWT側で modelRef.getModel() を実行してももちろんnullが返る。
しかし、server側でmodelRef.getModel() を実行してからクライアントに返却すると、なんとGWTでgetModel()が実行可能になる。
InverseModelListRefでも同様で、サーバー側でgetModelList()を実行していればGWT側で利用出来るようになる。
これはModelRefやInverseModelListRefが一度取得したModelを内部のフィールドに保持しているからで、GWTクライアントにもそのまま渡されるようだ。


というわけで、キーに文字列を使った場合に一意性が確保できないという問題は残っているが、ModelRefがGWTクライアント側で使えないというのは勘違いだったようだ。


関連エンティティのキーを文字列で保持しておくとデータストアに問い合わせなくても関連先の情報が意味のある形で表示できるから便利だという気がしたんだけど、id自動生成+ModelRefを持っておくのがやっぱり安全でいいのかもしれない。