2

私は現在、Play フレームワークを使用して Scala で小さなアプリケーションを開発しています。ユーザーが行った操作のリストを保持したいと考えています。私がやっているように、Anorm だけを使用して ID の単純なリスト (List[Long]) を保存することは可能ですか?

そうでなければ、それを機能させるために他に何を使用できますか? Scala Play!で説明されているような ORM を使用する必要がありますか? anorm または ORM を使用していますか?

4

3 に答える 3

2

SQL データベースへの永続化について話している場合は、Anorm が確実にそれを処理できます。

最も基本的なレベルでは、SQL データベースに長整数のテーブルを作成し、Anorm を使用してリストを永続化できます。UserActionsと呼ばれるその唯一の列を持つ と呼ばれる単一列のテーブルに整数を格納すると仮定しますaction

def saveList(list: List[Long]) = {
  DB.withConnection { implicit connection =>
    val insertQuery = SQL("insert into UserActions(action) values ({action})")
    val batchInsert = (insertQuery.asBatch /: list)(
      (sql, elem) => sql.addBatchParams(elem)
    )
    batchInsert.execute()
  }
}

私はあなたのために小さなデモをまとめて、それを Heroku にプッシュしています。すぐにリンクを更新します (編集: Heroku と私は今夜うまくいっていません。申し訳ありません)。

コードは私の Github にあります: https://github.com/ryantanner/anorm-b ​​atch-demo

models/UserActions.scala を調べて、具体的にそのスニペットを見つけてください。残りは、デモをより面白くするための綿毛です。

ここで、一歩下がって、これらのユーザー操作についてどのような情報が必要かを自問してみます。意味的に、その List[Long]はどういう意味ですか? これらのユーザー アクションに関する情報をさらに保存する必要がありますか? 実際には (UserID、PageVisited、Timestamp) の行のようなものである必要がありますか?

于 2013-03-19T23:24:57.817 に答える
0

Anorm の BatchSql が最近更新されました。最新のものをチェックしたい場合があります。

于 2014-07-09T09:07:36.440 に答える
0

未テスト

次のようなバッチ挿入ステートメントを作成する必要があると思います。

  val insertStatement = 
    SQL("""INSERT INTO UserOperations (id) VALUES ({id})""")
   .asBatch
   .addBatchParamsList(List(Seq(1),  Seq(2)))
   .execute()
于 2013-03-19T22:32:21.780 に答える