2012-09-17 7 views
12

2つのGrailsドメインのサンプルクラスを考えてみましょう。GORMの 'static transients'と 'transient Type aField'の宣言に違いはありますか?

ファーストクラス:

class Person { 

    String name 
    Integer counter = 0 

    static transients = ['counter'] 
} 

2級:

class Vehicle { 

    String name 
    transient Integer counter = 0 
} 

は、クラス整数カウンタフィールドのGORM持続またはドメインクラスの振る舞いに違いはあるのでしょう人および車両

編集:私はそれを知っていますクラスは、Grails docsが参照するようにそれを行う良い方法です。しかし、私はクラスの方が好きです。コードを読むときに見落とされないように見えます。

答えて

15

2つのメカニズムは、異なる種類の「一時的」を定義します。 static transientsは、HibernateによってデータベースにマップされるべきではないBeanプロパティを定義します。transientキーワードは、Javaオブジェクトの直列化メカニズムによって保存されるべきではないフィールドを示します(Webflowを使用する場合など)。彼らはどちらも異なる状況でその用途を持っています。

+0

これは本当です。私はそれについてよく知っていましたが、プロパティが静的な一時的なリストに置かれると、(XMLなどのキャスティングが使用されているときなど)直列化されません。したがって、一時的なキーワードと同様の動作でした。 私は今もチェックしましたが、とにかく一時的なIntegerカウンタがDBスキーマにエクスポートされるため、実際にはこれらの2つの間に共通点はありません。 とにかく、あなたの答えは十分です、ありがとう! – topr

関連する問題