是否可以在 Scala 中使用 Morphia?
是否还有其他支持 Scala 的 MongoDB 轻量级 ORM?
Morphia只是一个基于mongo-java-driver的持久层,它使用 JPA 样式的注解进行对象映射。它应该与 Scala 完美配合。
在“原生”的 Scala 驱动程序中(值得一提的是,它们都基于mongo-java-driver),Rogue(由 Foursquare 开发)在意识形态上最接近Morphia(尽管它不使用注解,它们不是t 被认为是 Scala 惯用的)。
我更喜欢“Mongo Scala 驱动程序”:
Morphia可能更平易近人并且具有(更)平滑的学习曲线,但重要的是要意识到Rogue在查询时为您提供的静态类型安全和自动完成支持实际上比 Morphia 高一个级别——Morphia 只是运行时安全的,他们也承认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/