Morphia用于Scala

时间:2011-02-20 22:10:01

标签: orm scala mongodb morphia

是否可以在Scala中使用Morphia?

是否还有支持scala的MongoDB的其他轻量级ORM?

4 个答案:

答案 0 :(得分:7)

查看Salat:

https://github.com/novus/salat

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

答案 1 :(得分:6)

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

在“原生”Scala驱动程序中(值得一提的是,所有这些驱动程序都基于 mongo-java-driver ),Rogue (developed by Foursquare)是最接近 Morphia的意识形态(虽然它不使用注释,但这些注释不被认为是Scala-idiomatic)。

答案 2 :(得分:1)

我更喜欢“Mongo Scala Driver”:

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

答案 3 :(得分:0)

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()

VS

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/