2017-02-16 5 views
0

JavaでPlay Framework 2.5を使用しています。非常に遅いデータベースからデータを取得する必要があり、アプリケーションのいくつかの部分、特にJavaコントローラとScalaテンプレート内でこのデータが必要です。現在のリクエストにオブジェクトを格納する

データオブジェクトをすべてのメソッドにパラメータとして渡すことは非常に面倒です。

私が望むのは、データベースからデータを取得し、それを現在の要求にバインドし、コントローラとテンプレートで使用することです。 これは、単一のHTTP要求に耐える必要があります。パラレルHTTPリクエストは、データベースからデータを再ロードする必要があります。しかし、同じリクエスト内で同じデータを2回読み込むことは望ましくありません。

Playでデータを保存する正しい場所は何ですか?

現在、私は "Helper.getHeavyObject()"のようなヘルパーメソッドを使用しています。私のコントローラ内とテンプレート内です。このヘルパーはRedisキャッシュからデータを取得しますが、私はそれを取り除きたいと思います。それはあまりにも多くのオーバーヘッドです。現在、1回のリクエストで同じオブジェクトをRedisから最大6回ロードしています。より良い方法が必要です。

ありがとうございました!

答えて

0

Httpにはpublic Map<String, Object> args;があり、このようなテンプレートとコントローラでアクセスできます。ctx().args.put("your_key", object) 1回のリクエストでのみ使用できます。

ステートレスで、多分 https://www.playframework.com/documentation/2.5.x/JavaCache

プレイキャッシュを使用しようそれとも、すべての要求ににアクション組成を作成することができます果たしていることに注意してくださいは、キャッシュを読んで、地図上の価値を置くか、単にあなたからのリクエストキャッシュサーバー。 https://www.playframework.com/documentation/2.5.x/JavaActionsComposition

+1

> Httpには公開されているMap argsがあります。あなたはテンプレートとコントローラでそれにアクセスすることができます パーフェクト、私はそれを試みます。これは私が探していたものです。 >再生キャッシュを使用しよう 現在、私はRedisキャッシュを使用していますが、私は同じオブジェクトに対してばかげて6回までクエリを実行しています。 ありがとうございます! – schube

+0

アクション構成を使用する場合は、マップ上に値を追加できますが、新しいリクエストごとに、プレーのステートレスなデザインのためにクエリを実行してマップに追加することに注意してください。 – pedroct92

関連する問題