Slick и Anorm на платформе Typesafe

Я начал использовать Scala, Play Framework и в настоящее время изучаю другие технологии Typesafe Reactive Platform. Тем не менее, я просто немного запутался в технологии слоя сохранения, которую следует использовать. Есть Anorm от Play Framework, который является частью платформы Reactive, и Slick, который тоже является частью этой платформы. Есть ли планы на будущее отдать предпочтение одному из них во всей платформе (например, оставить Anorm и рекомендовать Slick в качестве основной технологии Scala DB в Play)? Можно ли сказать, что один из них сейчас находится в более активной разработке, с более светлым будущим? Или есть какие-либо рекомендации от Typesafe, какой из них использовать с реактивной платформой Typesafe?

Спасибо.


person xwinus    schedule 13.01.2015    source источник
comment
Это совершенно разные проекты, находящиеся в активной разработке. На самом деле все сводится к тому, нравятся ли вам ORM или нет?   -  person Michael Zajac    schedule 13.01.2015
comment
@m-z Slick не является ORM   -  person Gabriele Petronella    schedule 13.01.2015
comment
Но это похоже на ORM.   -  person Michael Zajac    schedule 13.01.2015
comment
@ m-z это уровень сохранения данных. Он разделяет некоторые концепции с ORM, но как только вы начнете его использовать, вы поймете, что это совершенно другой зверь. Отношение к нему как к ORM приведет к плохо спроектированным слоям данных и неожиданному поведению (я говорю по опыту).   -  person Gabriele Petronella    schedule 13.01.2015
comment
@ m-z Я в первую очередь разработчик Java EE, имеющий опыт работы с JPA/Hibernate, поэтому я все еще пытаюсь понять, чем Slick отличается от классической концепции ORM.   -  person xwinus    schedule 13.01.2015
comment
@xwinus, если вы пропустили это: slick.typesafe.com /doc/2.1.0/orm-to-slick.html   -  person Gabriele Petronella    schedule 13.01.2015
comment
Я написал сообщение в блоге, сравнивающее Slick с Anorm: codewithstyle.info /   -  person milosz    schedule 11.07.2016


Ответы (1)


Это скорее субъективный вопрос, но некоторые объективные данные можно найти:

  • anorm недавно был удален из основного репозитория Play Framework на github.

  • Slick — более свежий проект

  • #P4# <блочная цитата> #P5#

При этом подходы у них разные. Anorm не зависит от базовой базы данных и предоставляет более удобный способ написания SQL-запросов; с другой стороны, Slick специфичен для БД и предоставляет синтаксис для запросов, подобный scala.


Личное мнение

Последние два года я активно работал над SQL-проектами в scala, и моя команда перешла с Anorm на Slick для новых проектов. Мы также рассматриваем возможность перехода с Anorm на Slick в существующих кодовых базах. Часть причин связана с личным вкусом, а часть — с объективными данными, приведенными выше, которые заставляют меня думать, что производство Anorm будет постепенно прекращено.

person Gabriele Petronella    schedule 13.01.2015
comment
Личное: Anorm делает только одну вещь, и делает это отлично: анализирует результат SQL без предположения БД. Slick выполняет множество автоматических сопоставлений по типам, но это работает не для всех случаев БД. Даже постоянство требует специального синтаксического анализа, после чего и Slick, и Anorm возвращаются к отображению собственного набора результатов. Для меня это зависит от доли случая, требующего конкретного разбора. Если большинство специфично, то я предпочитаю Anorm (более сфокусированный на цели, меньший отпечаток пальца). - person cchantep; 14.01.2015
comment
Я хотел бы знать, какой из них вы бы выбрали, когда дело доходит до производительности? Или просто: какой из них быстрее? - person AME; 03.12.2015