2010-02-25 3 views
5

Мы оцениваем решения ORM для моего проекта, которые тесно связаны между бизнес-слоем и datalayer (JDBC). Я начал заниматься PoC с Cayenne. Мои требования выглядят так: a) Уже существует схема базы данных b) Схема очень гранулированная. То есть Java-объекты реального времени производятся только путем объединения таблиц. с) На данный момент я просто хочу, чтобы выполнить операцию чтения (чтобы быть точным фильтрации и сортировки в списке по inputing критериям)Является ли cayenne хорошим выбором для моего требования?

До сих пор, наблюдения, которые я сделал с Cayenne являются 1) Стол и объекта плотно в сочетании. Modeler не позволяет создавать java-объект без связанной таблицы. 2) Я не мог найти простой способ сопоставить вывод именованного запроса с объектом java, чтобы получить список в соответствии с требованиями приложения. 3) Также я не уверен, что выражения работают с именованными запросами.

Я хотел бы знать ваши данные о наилучшем выборе для моего требования?

Заранее спасибо.

ответ

5

Если бы мне пришлось выбирать инструмент ORM или поставщик JPA, это не было бы Cayenne просто потому, что оно, похоже, не широко используется, поэтому сообщество, стоящее за ним, не очень велико, и это вызывает беспокойство. Таким образом, нет необходимости обсуждать технические вопросы, такие вещи, как Cayenne 2.0, навязчивы, вам нужно реализовать интерфейс или расширить суперкласс (Cayenne 3.0 поддерживает POJO, но все еще находится в состоянии бета-тестирования, спустя более 2 лет ...). Нет, действительно, я не вижу веских оснований не выбирать Hibernate, стандарт defacto, если вам нужен инструмент ORM.

Но ...

Учитывая ваши требования, ОРМ может на самом деле не может быть лучшим выбором, Мосты из-б), так что я бы рассмотреть возможность использования iBatis (который не является O/R Mapper, это данные mapper).

+0

Благодарим за отзыв. Мы рассмотрим вашу рекомендацию. Требование I mentioend было началом. В будущем нам могут потребоваться полные функции ORM. – Sudheer

4

В Cayenne есть много очень хороших функций, и с положительной стороны у вас есть множество инструментов с открытым исходным кодом для использования в вашем проекте. Hibernate подходит для некоторых людей и других Cayenne. Я знаю, что для более собственного использования Cayenne намного превосходил Hibernate в основном из-за этих факторов:

  • очень полезное сообщество пользователей. Hibernate может быть немного абразивным.
  • очень надежная кодовая база с большим количеством тестов, которые обеспечивают большое покрытие кода
  • ROP (трехъярусная) поддержка. Это само по себе является огромной особенностью, если вам это нужно.
  • хорошая поддержка наследования
  • Cayenne моделлер

Да, подход Cayenne является то, что Entities объектов (клиенты Java, отображающие в БД) расширить суперкласса. Это дает вам некоторые преимущества перед Hibernate (Cayenne управляет всем жизненным циклом объекта) и представляет сложности для некоторых людей.

Я также считаю, что Cayenne управляет Контекстом (группой объектов и изменениями, которые позже будут совершены вместе), чтобы быть очень интуитивно понятными.

Что касается ваших вопросов:

1) Cayenne, безусловно, позволяет создавать Entities объекта без отображения один-к-одному к столу. Мы делаем это все время, особенно при моделировании наследования.

2) SQLTemplate позволит вам получить именованные запросы, но вы обнаружите, что большинство ORM оттолкнут вас от этого подхода, так как вы работаете против естественного способа работы ORM для создания запросов непосредственно в базе данных. Дело в том, чтобы по возможности абстрагировать базу данных.

3) SQLTemplate позволит вам делать все, что угодно. Но опять же, принятие ORM - это стратегия написания вашего приложения, а не просто световая оболочка для JDBC. Я считаю, что преимущества огромны, и наши проекты выиграли, но это зависит от ваших целей.

0

Согласен, у Cayenne очень много хороших функций. Но если вашему проекту нужна какая-то работа с наследованием (вы не упомянули об этом), окончательно Cayenne не вариант. Он не выполняет «хорошую наследовательскую поддержку»:

Горизонтальное наследование - https://issues.apache.org/jira/browse/CAY-795 -означение с 30 мая по 07 мая; обсуждение Вертикальное наследство на http://cayenne.195.n3.nabble.com/Vertical-inheritance-td827636.html с 18 мая по май 2010 года

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

 Смежные вопросы

  • Нет связанных вопросов^_^