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)


arrow_upward
4
arrow_downward

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

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

arrow_upward
4
arrow_downward

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

person Marcio Aguiar    schedule 19.09.2008

arrow_upward
3
arrow_downward

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

person JavadocMD    schedule 19.09.2008

arrow_upward
3
arrow_downward

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

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

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

person Kango_V    schedule 28.05.2010

arrow_upward
2
arrow_downward

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

person cliff.meyers    schedule 19.12.2008

arrow_upward
0
arrow_downward

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

person Cristiano Sanchez    schedule 19.09.2008

arrow_upward
0
arrow_downward

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

person user17163    schedule 19.09.2008