Play-Scalaでの簡単な読み込みには、どのようなSQLアクセスレイヤーを使用するのですか?

anorm dapper playframework-2.0 scala sql

質問

Play 2.1(Scala)で読み込み専用のWebアプリケーションを実装します。私はJSONに読み込まれたデータの読み込みとマーシャリングしか行っていないので、私は他のDSLとマッピングを避けたいと思います。

NET / C#でdapper-dot-netを使って同様のプロジェクトを行いました。大騒ぎではなく、多くのボイラープレート。

私は現在見ている:

  • anormanormtypedはあまりにも非常に有望に見えるが、ケースクラスのコンストラクタのパラメータに変数を手動でマッピングを回避することは素晴らしいと思われる。採用することを早期におそらくあります。)
  • prequel
  • スリック - 2.1でSQLを行うための主な方法と主に平野のSQL APIことになっているので、

受け入れられた回答

スリックはとても良いです。 この短い本をチェックしてみてください。それは基本的なことを説明するのに非常に優れています。ドキュメントと一緒にすばやくあなたを手に入れることができます。また、githubのドキュメントが優れていることに注意してください。最新のものはまだ公開されていません。

プレーンSQLオプションを使用することは非常によくサポートされています。しかし、プレーンなSQLクエリでは、型チェックの点でそれほど大したことはありません。それ以外の場合は、Scala 2.10を使用して簡単なクエリを実行するのは簡単です:

sql"select * from coffees where name = $name".as[Coffee]

これは、 $nameが実際にはクエリにないので、SQLの犠牲からあなたを守るでしょう。詳細については、 ドキュメントを参照してください。


人気のある回答

私はGitHubのプロジェクトを持っています.GitHubはdbmapperと呼ばれるDapperに大いにインスパイアされています

スリックの利点は次のとおりです。

  • いいえDSL - あなたはすでに良いデータDSLを知っている、それはSQLと呼ばれる
  • 全く非同期
  • ほんの少しの定型文

次に例を示します。

// Scala class that maps to the book table, with columns to match the class members
case class Book(
  bookId: Int,
  title: String,
  retailPrice: BigDecimal,
  publishDate: LocalDate)

// mapping function from table row to Book class, 
// auto generated at compile time by Scala Macro  
implicit def rowToBook: RowData => Book = (r) => DbCodeGenerator.rowToClass[Book](r)

// query returning future list of books, 
// safe query interpolation, the maxPrice is converted to a query argument  
val maxPrice = 11.99
val allBooksFuture = DbAsync.exec[Book](q"select * from book where retail_price < $maxPrice")        

val oneBook: Future[Book] = DbAsync.execOne[Book](q"select * from book where book_id = 2")

// returns Future[Option[]]     
val maybeOneBook: Future[Option[Book]] = DbAsync.execOneOrNone[Book](q"select * from book where book_id = -123")

あなたがドットネットの世界から大まかなことを知っているなら、dbmapperは妙に親しみを感じます!



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ