0

grails アプリケーションで 1 つのサービスを作成しました。そのサービスには 25 のメソッドがあります。一部のメソッドはデータを取得してコントローラーに渡すためのもので、一部のメソッドはビジネス ロジックを適用するためのもので、その他はデータベース データの CRUD 操作のためのものです。

サービスに対して動作が異なる複数のメソッドを作成することは良い考えですか? サービスをトランザクション化する必要がありますか?

そして、デフォルトの方法の使用は何ですか

def serviceMethod() {

    }

?

このメソッドは、新しいサービスを作成するときに作成されます...

4

2 に答える 2

3

サービスに対して動作が異なる複数のメソッドを作成することは良い考えですか?

サービス内の複数のメソッドは完全に問題なく、サービス内のメソッドがコンテキストに関連している場合、それは単に理にかなっています。

と呼ばれるサービスを例にとってみましょうspringSecurityService。そこに含まれるメソッドは、Spring セキュリティ操作に関連していると思われます。sendMailそこにメソッドが見つかるとは思わないでしょう。

サービスをトランザクション対応にする必要がありますか?

そのサービスでデータベース操作 (主に書き込み!) を実行する場合は、サービスをトランザクション対応にする必要があります。サービスがトランザクション対応の場合、障害が発生した場合にデータベース操作をロールバックできます。

デフォルトメソッドの使用は何ですか

デフォルトの方法は単なるプレースホルダーです。自由に編集または削除してください:D

于 2012-06-13T12:07:09.870 に答える
2

Grails ではサービスはデフォルトでトランザクション対応です - http://grails.org/doc/latest/guide/services.html#declarativeTransactions

serviceMethodCreateService スクリプトによって生成されます。あくまで一例ですので、お好みで削除していただいてもかまいません。

すべてのビジネス ロジックをサービスに入れることができます。便利ですが、これはAnemic Domain Modelと呼ばれるアンチパターンであることに注意してください。

オブジェクト指向の原則に従い、ほ​​とんどのビジネス プロセスをドメイン クラスに配置するようにしてください。複数のドメイン オブジェクトを含む複雑なプロセスがある場合は、これをサービスに入れることができます。

于 2012-06-13T12:08:16.263 に答える