JPA 1 недостаточно хорош

Работая в проекте среднего размера в течение последних 4 месяцев - мы используем JPA и Spring - я совершенно уверен, что JPA недостаточно эффективен для проектов, требующих большего, чем экран CRUD... Интерфейс запросов плохой, Hibernate не уважает JPA spec все время и много раз мне нужно использовать классы гибернации, аннотации и конфигурацию. Ребята, что вы думаете о JPA? Разве это не достаточно хорошо?


person Cristiano Sanchez    schedule 19.09.2008    source источник
comment
Hibernate имеет свои собственные аннотации, которые выходят за рамки того, что предлагает JPA.   -  person Arthur Thomas    schedule 19.09.2008
comment
Название должно быть изменено с JPA на JPA 1   -  person HDave    schedule 08.06.2010


Ответы (7)


Ну, я думаю, что в большинстве случаев JPA «достаточно хорош», но я очень скучаю по Criteria API (предоставляется только Hibernate).

person Stephane    schedule 19.09.2008
comment
Люди должны понять, насколько СТАРЫЙ этот разговор. Тем временем вышел JPA с API критериев. - person HDave; 08.06.2010

Hibernate долгое время находился в пути. Вот почему у него есть много функций, недоступных в JPA. Но со временем JPA наверстает упущенное. До тех пор используйте специальные настройки JPA и Hibernate, где это необходимо. Если вам нужно будет переключиться позже, это будет намного проще.

person Marcio Aguiar    schedule 19.09.2008

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

person JavadocMD    schedule 19.09.2008

Мы объединяем JPA 2.0, Hibernate Core, Hibernate Search и Hibernate Validator через нашу внутреннюю оболочку. Он делает все, что мы ему бросаем :)

Объедините это с Maven, и у нас тоже есть база данных! Добавьте к этому DBUnit, и вы получите все, что вам нужно.

Безумно быстрый поиск через Lucene, но использование запросов Hibernate Criteria/HQL — это очень круто. Вся эта сила, стоящая за блоком предложений GWT, великолепна.

person Kango_V    schedule 28.05.2010

Мой совет будет просто использовать Hibernate. Hibernate в сочетании с аннотациями JPA + аннотации Hibernate довольно эффективны. Вы даже можете настроить EntityManagerFactory для автоматического обнаружения сущностей в пути к классам, а затем вызвать getSessionFactory(), чтобы использовать собственные API-интерфейсы Hibernate в вашем приложении. Если вы используете Spring, это очень легко сделать с помощью LocalContainerEntityManagerFactoryBean и HibernateJpaVendorAdapter.

person cliff.meyers    schedule 19.12.2008

Конечно, любой ORM лучше, чем рукописный SQL для операций CRUD ... дело в том, что я думаю, что нет причин использовать JPA вместо чистого Hibernate, потому что я много смешиваю оба. Если я не получаю скрытого провайдера, зачем все равно использовать JPA?

person Cristiano Sanchez    schedule 19.09.2008

Одной из приятных особенностей использования аннотаций JPA и Hibernate является автоматическая настройка и обнаружение постоянных классов. Кроме того, это зависит от того, сколько времени вам нужно отказаться от использования JPA API, если вы делаете это только 10% времени, это все равно сделает переключение провайдеров намного проще, чем если бы вы использовали спящий режим для 100 % ваших запросов.

person user17163    schedule 19.09.2008