Использование Morphia для Scala

Можно ли использовать Morphia в Scala?

Существуют ли какие-либо другие легкие ORM для MongoDB, поддерживающие scala?


person akshaykarthik    schedule 20.02.2011    source источник


Ответы (4)


Morphia – это просто уровень сохраняемости, основанный на mongo-java-driver, который использует аннотации в стиле JPA для сопоставления объектов. Он должен отлично работать со Scala.

Среди «родных» драйверов Scala (стоит упомянуть, что все они также основаны на mongo-java-driver), Rogue (разработанный Foursquare) является ближайшим идеологически к Morphia (хотя он не использует аннотации, которые не считаются Scala-идиоматическими).

person Vasil Remeniuk    schedule 21.02.2011
comment
Хотя мне понравился Салат, Руж действительно помог. В конце концов, я все равно остановился на Morphia. - person akshaykarthik; 22.02.2011
comment
Мы должны использовать Лифт, если хотим использовать Разбойника, не так ли? - person Joshua Partogi; 21.06.2011
comment
Есть ли какие-либо проблемы с производительностью или «неэффективность» при использовании драйвера на основе Java для реализации Scala? Просто любопытно.. - person dsignr; 20.07.2012
comment
@imaginonic: с логической точки зрения, не должно быть - я не думаю, что имеет значение, вызывает ли JVM код из того, что изначально было файлом .java, а не файлом .scala ... но кто-то с лучшим пониманием может подтвердить. - person Erik Kaplun; 10.01.2014
comment
@jpartogi: не Lift, как в Lift the Web Framework; просто lift-record подойдет. - person Erik Kaplun; 19.03.2014

Посмотреть Салат:

https://github.com/novus/salat

Салат использует обработанные сигнатуры Scala для сериализации и десериализации классов case.

person rktoomey    schedule 20.02.2011

Я предпочитаю «Драйвер Mongo Scala»:

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

person Fabian    schedule 21.02.2011
comment
Когда я смогу найти его сложную демонстрацию? Я пытался целый день, но до сих пор не знаю, как сохранить модель user refs many question. - person Freewind; 20.03.2011

Morphia, вероятно, гораздо более доступна и имеет (намного) более плавную кривую обучения, но важно понимать, что Поддержка статической безопасности типов и автоматического завершения на один уровень выше 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()

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/

person Erik Kaplun    schedule 19.03.2014