scala - 使用 Play 框架和 Anorm 保留列表

标签 scala playframework-2.0 persistence anorm

我目前正在使用 Play 框架在 Scala 中开发一个小型应用程序,我想保留用户所做的操作列表。是否可以像我一样使用 Anorm 存储简单的 id 列表(List[Long])?

否则,我还能用什么来让它工作呢?我是否需要使用 Scala Play! Using anorm or ORM 中解释的 ORM ?

最佳答案

如果您正在谈论持久化到 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-batch-demo

查看 models/UserActions.scala 以专门查找该片段。其余的只是一些废话,以使演示更有趣。

现在,我想退后一步,问自己需要哪些有关这些用户操作的信息。从语义上讲,List[Long] 意味着什么?您是否需要存储有关这些用户操作的更多信息?它实际上应该类似于(UserID、PageVisited、Timestamp)行吗?

关于scala - 使用 Play 框架和 Anorm 保留列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15511109/

相关文章:

javascript - 浏览器中的持久存储

java - Spring PersistanceContext、EntityManager 和使用数据库

database - Django 数据库连接池与 psycopg2.pool

scala - 为什么在将线映射到 Array[String] 时没有编码器?

Scala 隐式类限制

java - 在 Stream Start 之前访问 Flink Classloader

playframework - 将参数传递给 main.scala.html

Scala-Spark : Get the column names of the columns that contains null values

scala - 无法理解 Play 2.0 中的 Iteratee.fold

scala - 优雅的 Iteratee -> 枚举器 "forwarding"正在运行