Библиотека отображения базы данных Scala, аналогичная iBATIS

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

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

В Интернете я видел множество материалов, рассказывающих об ORM для Java и Scala, но я не видел ничего похожего на iBATIS для Scala.

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

5 ответов

Решение

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

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

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

Я оценил это, и это выглядело намного менее хлопотно, чем любая другая ORM или Scala-ориентированная постоянная библиотека.

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

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

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

Что касается скала-специфики; Вы могли бы добавить @BeanProperty аннотация для генерации методов получения / установки, а затем объявляет метод для защиты null:

@BeanProperty var injectedXyz : String

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

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

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

Вы можете предпочесть ScalikeJDBC. Посмотри на это.

https://github.com/seratch/scalikejdbc

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

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

Другие вопросы по тегам