2016-04-14 17 views
1

私には哲学的な質問があります。Play Framework 2.5.x Scala Slick実装スタイル

私はここ数年、Play Framework for Javaを非常に満足しています。今私はScalaと関数型プログラミングに目を向けようとしています。 Javaベースのプレーでは、私はEbeanを使用しています。そのため、Playのドキュメントによると、Ebean Modelクラスを拡張し、独自のモデルを実装しました。各モデルでは、クエリを呼び出すためにFinder型の静的変数を宣言しました。これらはすべて文書化されており、うまく機能しています。

しかし、ScalaベースのPlay(v2.5.x)では、持続層に関するドキュメントがあまり多くありません。 OK、私はそれが機能プログラミングのアイデアを使用しているので、Play Slickの勧告があることを理解しました。私はそれについて大変興奮していますが、それを使用する方法に関するドキュメントはほとんどありません。 Slickを有効にする方法、データソースとdbサーバーを設定する方法、dbをControllerに注入する方法を見つけました。また、dbの簡単なクエリを呼び出す方法については、非常に小さな例があります。

質問は:どのように実際にスリックを使用するのですか?私はいくつかの第三者のチュートリアルやブログを研究し、それは複数の方法があるようです。

1)モデルの定義方法は?モデル自体を定義するためには、ケースクラスを使用する必要があるようです。私は列とそのプロパティを定義するためにクラスを拡張するクラスを定義する必要がありますか?

2)プロジェクトの構造は何ですか?モデルごとに新しいスカラファイルを作成する必要がありますか? Javaのコンベンションによって私はすべきですが、時にはすべてのモデルを(Python Djangoのような)1つのscalaファイルで見たことがあります。私は別々のファイルが良いと仮定します。

3)モデルを操作するためにDAOを作成する必要がありますか?それともサービスのようなものを作るべきですか?コードはおそらく非常に同じでしょう。私が求めているのは、プロジェクトの構造です。

もスリックのためのタイプセーフアクティベーターのテンプレートがあり part of the Slick documentation

私は心をこめてはじめにお勧めすることができます任意のアイデア

答えて

0

のために事前にありがとう - こんにちはスリック - あなたはhereを検索し、探索することができましたそこから続行してください。

  1. SlickとPlayを開始するには、に依存関係を追加する必要がありますファイル:(私はお勧めします)。また

    "com.typesafe.play" %% "play-slick" % "2.0.0" 
    

    進化

    "com.typesafe.play" %% "play-slick-evolutions" % "2.0.0" 
    

    そしてもちろんの

    "com.h2database" % "h2" % "${H2_VERSION}" // replace `${H2_VERSION}` with an actual version number 
    
  2. データベースのドライバ次に、コンフィギュレーションを指定する必要がありますあなたのデータベース:

    slick.dbs.default.driver="slick.driver.H2Driver$" 
    slick.dbs.default.db.driver="org.h2.Driver" 
    slick.dbs.default.db.url="jdbc:h2:mem:play" 
    

あなたはこのすべての素敵な概観を持っているし、より多くのあなたは間違いなくTHE BEST STARTING POINTを見てみなければならない場合 - モデル、DAOを、コントローラとの完全なプロジェクトを、2.5を再生するようになって。x

+0

play2.5の間違ったplay-slick/evolutions。とにかく質問に答えているとは思えません。とにかく、主に意見に基づいて質問をするべきだと私は考えていますが、 – suish

+0

バージョンを修正しました。私は質問自体が少し広範であることに同意しますが、私はまだそれが有効なものだと思います。あなたは別の答えを提供することは自由です、私は鉱山を更新する予定です – Anton

+0

ありがとう、私はこの質問を投稿した直後にSlickの文書全体を発見しました。その前に、私はまだPlayのサンプルでグーグルをしていて、元のSlickのウェブサイトを見逃していました。しかし、いくつかの貴重な例と説明があります。 – spidla

2

私は滑らかなことについて同じ質問をしてくれて、私のために働く解決策を思いついた。このプロジェクト例を見てみましょう:

https://github.com/nemoo/play-slick3-example

他のほとんどの例のプロジェクトがあまりにも基本的なものです。だから、私は実際のライブプレイコードで見いだされたものと同様に、より広い範囲でこのプロジェクトを作成しました。私はサービスを含むさまざまなアプローチを試しました。最終的には、コードをどこに置くべきか分からなかったので、追加のレイヤーが使えないことがわかりました。あなたは過去のコミットの思考プロセスを見ることができます:)

私はreadmeから引用しましょう:リポジトリは、ドメイン集約との対話を処理します。すべてのパブリックメソッドはFuturesとして公開されています。内部的には、単一のトランザクション内で実行される1つのブロックにさまざまなクエリを作成する必要がある場合があります。この場合、個々のクエリはDBIOクエリオブジェクトを返します。単一のパブリックメソッドがこれらのクエリを実行し、未来をクライアントに公開します。

+0

JavaベースのPlay with Ebeanのコンセプトを採用してくれてありがとう、ありがたいです。モデルには、モデル定義とDAO /サービスが一体化されています。 – spidla

関連する問題