私は最初のScalaアプリケーションに取り組んでおり、ActiveRecordスタイルを使用してMongoDBからデータを取得しています。
UserやCategoryのようなモデルがあり、それらはすべて、トレイトを使用するコンパニオンオブジェクトを持っています。
class MongoModel[T <: IdentifiableModel with CaseClass] extends ModelCompanion[T, ObjectId]
ModelCompanionは、一般的なMongoDBクラッド操作を提供するSalatクラスです。これにより、次のようなデータを取得できます。
User.profile(userId)
私はこのActiveRecordクエリスタイルの経験がありませんでした。しかし、私はRailsの人々がそれを使用していることを知っています。そして、JPAを扱うためにPlayドキュメント(バージョン1.2?)でそれを見たと思います。
今のところ正常に動作しますが、MongoDBで統合テストを実行できるようにしたいと思います。「埋め込まれた」MongoDBをライブラリで実行できます。MongoModel
重要なのは、私のホスト/ポート構成が、すべてのモデルコンパニオンによって拡張されたクラスに実際にハードコーディングされていることです。
統合テスト(または将来作成できるその他の「プロファイル」)を実行するときに、別のホスト/ポートを指定できるようにしたい。
私は、Javaで長年Springを使用している依存性注入と、私のアプリケーションにおけるこれらすべての静的なものの欠点をよく理解しています。Springアプリケーションを構成するためのScalaに適した方法があることを知りましたが、ScalaでSpringを使用することが適切かどうかはわかりません。
Cakeパターンについていくつか読んだことがありますが、これは、タイプセーフでコンパイル時にチェックされるSpringコンテキストのようなものであり、私が望むことを実行しているようです。私は間違いなくケーキパターンに行くべきですか、それともScalaに他のエレガントな選択肢がありますか?ActiveRecordスタイルを使い続けることはできますか、それともテスト容易性のための完全なアンチパターンですか?
ありがとう