【问题标题】:Morphia use for ScalaMorphia 用于 Scala
【发布时间】:2011-02-20 22:10:00
【问题描述】:

是否可以在 Scala 中使用 Morphia?

还有其他支持 Scala 的 MongoDB 轻量级 ORM 吗?

【问题讨论】:

    标签: orm scala mongodb morphia


    【解决方案1】:

    查看萨拉特:

    https://github.com/novus/salat

    Salat 使用腌制的 Scala 签名来序列化和反序列化案例类。

    【讨论】:

      【解决方案2】:

      Morphia 只是一个基于 mongo-java-driver 的持久层,它使用 JPA 样式的注解进行对象映射。它应该与 Scala 完美配合。

      在“原生”Scala 驱动程序中(值得一提的是,它们都基于 mongo-java-driver),Rogue (developed by Foursquare) 在意识形态上最接近 Morphia strong> (尽管它不使用注释,这不被认为是 Scala 惯用的)。

      【讨论】:

      • 虽然我喜欢 Salat,但 Rouge 真的很有帮助。最后,我最终还是使用了 Morphia。
      • 如果我们想使用 Rogue,我们必须使用 Lift,不是吗?
      • 将基于 Java 的驱动程序用于 Scala 实现是否存在性能问题或“效率低下”?只是好奇..
      • @imaginonic:逻辑上认为,不应该——我认为如果 JVM 从最初的 .java 文件与 .scala 文件中调用代码,这并不重要......但有更好洞察力的人可以证实。
      • @jpartogi:不像 Lift the Web Framework 中的 Lift;只需lift-record 即可。
      【解决方案3】:

      我更喜欢“Mongo Scala 驱动程序”:

      https://github.com/osinka/mongo-scala-driver

      【讨论】:

      • 什么时候可以找到它的复杂演示?试了一天,还是不知道怎么保存user refs many question模型。
      【解决方案4】:

      Morphia 可能更平易近人,并且具有(更)平滑的学习曲线,但重要的是要意识到 静态类型安全和自动完成支持Rogue 为您提供查询实际上比 Morphia 高一级——Morphia 只是运行时安全的,他们也承认这一点beginning of the README

      比较:

      val checkin: Option[Checkin] =
        Checkin where (_.venueid eqs id)
          and (_.userid eqs mayor.id)
          and (_.cheat eqs false)
          and (_._id after sixtyDaysAgo) 
          limit(1).get()
      

      Employee scottsBoss =
        ds.find(Employee.class).filter("underlings", scottsKey).get();
      

      如果您将任何字段名称或查询值更改为不正确,您将立即收到输入错误,而 Morphia 只会在运行时抛出异常。

      http://engineering.foursquare.com/2011/01/21/rogue-a-type-safe-scala-dsl-for-querying-mongodb/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多