【发布时间】:2011-02-20 22:10:00
【问题描述】:
是否可以在 Scala 中使用 Morphia?
还有其他支持 Scala 的 MongoDB 轻量级 ORM 吗?
【问题讨论】:
是否可以在 Scala 中使用 Morphia?
还有其他支持 Scala 的 MongoDB 轻量级 ORM 吗?
【问题讨论】:
【讨论】:
Morphia 只是一个基于 mongo-java-driver 的持久层,它使用 JPA 样式的注解进行对象映射。它应该与 Scala 完美配合。
在“原生”Scala 驱动程序中(值得一提的是,它们都基于 mongo-java-driver),Rogue (developed by Foursquare) 在意识形态上最接近 Morphia strong> (尽管它不使用注释,这不被认为是 Scala 惯用的)。
【讨论】:
.java 文件与 .scala 文件中调用代码,这并不重要......但有更好洞察力的人可以证实。
lift-record 即可。
我更喜欢“Mongo Scala 驱动程序”:
【讨论】:
user refs many question模型。
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/
【讨论】: