Библиотека сопоставления баз данных Scala, похожая на iBATIS

Я использую iBATIS уже много лет и очень доволен. iBATIS очень хорошо позволяет писать свой собственный SQL, одновременно выполняя рутинную работу по отображению данных в/из объектов/базы данных. Мне бы хотелось иметь специальную библиотеку Scala, которая выполняет сопоставления того же типа, что и iBATIS. Я полагаю, что специальный инструмент Scala

  • не требует, чтобы объекты были Java Beans (т.е. геттеры и сеттеры)
  • использовать Option вместо нулевых значений
  • Я думаю, что это все, но может быть больше

Я видел кучу материалов в Интернете, говорящих об ORM для Java и Scala, но я не видел ничего похожего на iBATIS для Scala.

Кто-нибудь знает о таком инструменте в Scala?


person three-cups    schedule 24.02.2011    source источник


Ответы (5)


На веб-сайте Scala (www.scala-lang.org/node/6539) nilskp рекомендует orbroker (http://code.google.com/p/orbroker/), поскольку он изначально написан для Scala.

person Situagent    schedule 24.02.2011

Времена изменились. Теперь есть проект MyBatis Scala, который гораздо более идиоматичен для Scala.

http://mybatis.github.io/scala/

Я оценил ее, и мне показалось, что с ней намного меньше хлопот, чем с любой другой библиотекой персистентности, ориентированной на ORM или Scala.

Ссылки на их странице проекта в настоящее время не работают, но вы можете перейти на страницу GitHub здесь: https://github.com/mybatis/scala

У них есть различные образцы в разделе «mybatis-scala-samples». Этот пример DAO/CRUD является особенно хорошим примером: ItemDAO.scala

person Bryan Hunt    schedule 11.06.2012

Почему бы просто не продолжить использовать iBatis? В конце концов, это Java (и, следовательно, его можно использовать из Scala). Я все еще использую Spring JDBC в качестве слоя DAO.

Что касается особенностей scala; вы можете добавить аннотацию @BeanProperty для создания геттеров/сеттеров, а затем объявить метод для защиты null:

@BeanProperty var injectedXyz : String

def xyz : Option[String] = Option(injectedXyz)

По общему признанию, это не очень хорошо (т.е. требует дополнительного шаблона). Но я не видел ничего похожего на широко используемый уровень scala DAO (для SQL).

person oxbow_lakes    schedule 24.02.2011
comment
Я ценю ответ, но это то, чего я пытаюсь избежать. Я ищу фреймворк, который использует Scala. - person three-cups; 25.02.2011
comment
Просто чтобы поддержать точку зрения @oxbow_lakes. Я использую iBatis в приложении Scala и вполне им доволен. - person Alexander Azarov; 25.02.2011
comment
Чего я хочу от уровня DAO, так это надежности. Обычно уровень, на котором вы взаимодействуете с источником данных, может быть изолирован от остальной части вашего приложения, поэтому у меня возникло бы большое искушение выбрать этот маршрут. У вас будет пара грязно выглядящих занятий, но вы не получите никаких неприятных сюрпризов - person oxbow_lakes; 26.02.2011

Если бы мне пришлось выбирать ORM, я бы посмотрел на Squeryl (http://squeryl.org/). Я пробовал Lift Mapper, и он хорошо работает с Lift Webkit, но он немного интегрирован и имеет определенные варианты дизайна, которые мне не нравятся.

person thoredge    schedule 24.02.2011

Вы можете предпочесть ScalikeJDBC. Взгляните на это.

https://github.com/seratch/scalikejdbc

Он также имеет генератор исходного кода. Особенно, если вы получаете доступ к существующей устаревшей базе данных, это очень удобно.

https://github.com/seratch/scalikejdbc-mapper-generator

person Kazuhiro Sera    schedule 25.05.2012
comment
К сожалению, документация для scalikejdbc сильно устарела, что затрудняет быстрое начало ее использования. - person expert; 26.05.2013