Библиотека отображения базы данных 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
Он также имеет генератор исходного кода. Особенно, если вы получаете доступ к существующей устаревшей базе данных, это очень удобно.