Первая база данных ORM для Play Framework (Java) с автоматическим созданием модели БД

Несколько лет я разрабатываю на работе сначала C#, MVC, Entity Framework, базы данных. Теперь я хочу попробовать Java и выбрать Play Framework и IDEA в качестве IDE. Теперь я ищу такую ​​систему ORM, как:

  • простая интеграция в Play Framework;
  • иметь генерацию классов из базы данных (реверс-инжиниринг) в качестве основного инструмента;
  • иметь простой язык, такой как LINQ в C # (например: из x в контексте. MY_TABLE выберите x)

person homobinary    schedule 05.12.2013    source источник


Ответы (4)


Я настоятельно рекомендую использовать jOOQ:

  • Поддержка создания классов моделей из консоли только одной командой: java -classpath jooq-3.1.0.jar;jooq-meta-3.1.0.jar;jooq-codegen-3.1.0.jar;postgresql-9.2-1003.jdbc4.jar;. org.jooq.util.GenerationTool /jooq_config.xml
  • Полный контроль над вашими SQL-запросами.
  • Простая отладка SQL. Очень просто: см. здесь.
  • Гибкий и мощный API. Полная документация.
  • Типфаза.
  • Идеальный выбор для SQL углубленного программирования.
  • Поддерживает Java и Scala.
  • Готовая поддержка расширенных типов SQL без проблем.
  • Встроенный экспорт в xml, html, excel
  • Встроенная поддержка пакетной вставки.
  • Хорошая поддержка.
  • Открытый исходный код
  • Поддерживаются многие механизмы баз данных.

Личные чувства

Я всегда любил SQL и мне действительно приходилось работать со многими ORM со многими технологиями (.NET: NHibernate, Entity Framework, Linq. Java: Hibernate, JPA. Scala: Anorm SQL) и не было подходящего решения для меня. Я использовал model first и database first. Каждый раз я использовал сырой SQL и процедуры хранения в наиболее критических точках приложений. ORM генерирует много мусора, который очень сложно профилировать и оптимизировать.

Когда я нашел jOOQ, я был настроен очень скептически. Примерно через 6-8 месяцев работы с ним я понял, что это все. Этот инструмент позволяет вам писать каждый запрос, похожий на необработанный SQL, и это очень продуктивный инструмент. Следующее, что этот инструмент действительно быстро растет.

person r.piesnikowski    schedule 06.12.2013

В Play есть встроенный ORM — это Ebean, все, что вам нужно, чтобы использовать его, просто раскомментируйте несколько строк в application.conf (и при желании выберите механизм базы данных, отличный от встроенного H2, т.е. MySQL, как описано в этот вопрос)

Затем создайте пакет models в папке app и начните добавлять свои модели.

Дополнительные сведения см. в официальной документации.

К сожалению, он не поддерживает реверс-инжиниринг...

person biesior    schedule 05.12.2013
comment
К сожалению, реверс-инженерные модели в Ebean невозможны. - person homobinary; 05.12.2013
comment
Да, на самом деле забыл добавить это, извините ... к счастью, генерация DDL работает как шарм во втором направлении. - person biesior; 05.12.2013
comment
В любом случае, спасибо! Может быть, нужно передумать, и код-сначала будет хорошо (особенно для небольших проектов), но тогда я не могу сказать боссу, что открытый исходный код лучше, чем продукты MS, потому что в открытом исходном коде нет инструментов для легкого программирования. , сконцентрировать программистов на логическом слое, а слой данных отдать специальным людям - db archinteriors. - person homobinary; 05.12.2013
comment
Сначала вам нужно... оседлать зверя :) В Play with Ebean разработку можно легко разделить на моделирование и основную фазу разработки, главное отличие состоит в том, что вы создаете DLL из объявлений моделей Java, а не в обратный порядок. В начале важно понимать, как изменения в классах моделей влияют на генератор DDL. Де-факто это мой любимый этап каждого проекта ;) ставьте лайки! - person biesior; 05.12.2013

Я не знаю, поддерживает ли IDEA обратное проектирование сущностей DB -> JPA, но Eclipse Dali отлично с этим справляется — я использовал этот подход в нескольких проектах и ​​был им доволен.

http://www.eclipse.org/webtools/dali/

Play2 работает нормально с полным JPA, если хотите. Ebean использует только аннотации JPA. Мне нравится EBean, так как, даже если я не совсем уверен в API критериев JPA (я прошел его через JPA 2.0, так что не знаю, насколько проще это стало в JPA 2.1) и полезности EntityMananager (все проблемы с подключенным / отключенные сущности) Я большой поклонник аннотаций JPA.

Всем, кто интересуется JPA, я рекомендую эту книгу.

https://rads.stackoverflow.com/amzn/click/com/1430249269

Кстати: именованные запросы JPA/JPQL могут подойти для sql, например, для простых запросов. Ebean не поддерживает JPQL, поэтому, если кто-то хочет его использовать, необходима полная реализация JPA, такая как Hibernate или EclipseLink.

person Jukka Nikki    schedule 05.12.2013

Jooq не поддерживает вложенные объекты. Идея хорошая, но не очень полезная.

person user3481396    schedule 28.03.2016
comment
Подход jOOQ предполагает, что вы на самом деле не хотите этого, по крайней мере, не в строгом смысле OO. Вместо этого вы хотите получить поток кортежей из базы данных и, возможно, преобразовать этот поток кортежей способом FP. Пример можно увидеть в этом сообщении о Подход функционального программирования к динамическому SQL с помощью jOOQ - person Lukas Eder; 10.07.2018