Подтвердить что ты не робот

Вам нравится критерий api JPA 2.0? Вы используете его с каркасом?

Я привык работать с API-интерфейсом Criteria в Hibernate и просто смотрел, как работают критерии в JPA 2.0.

То, что мне больше всего нравится в критериях спящего режима, - это легкость, которую мы должны составить с критериями.

Критерии JPA кажутся довольно тяжелыми для меня, а не такими быстрыми, как критерии гибернации. Одним из основных преимуществ по сравнению с Hibernate для меня, по-видимому, является использование метамодели (классы Entity_.java), но все же это немного тяжело, так как вам нужно поддерживать 2 класса или добавить обработчик аннотаций (хотя его довольно легко для интеграции с плагинами maven)

Я читал блог на SpringSource, который позволяет уменьшить сложность составления с помощью "JPA Predicates" и немного походить на Criterions in Hibernate.

Проект Querydsl кажется интересным.

http://blog.springsource.com/2011/04/26/advanced-spring-data-jpa-specifications-and-querydsl/

Просто интересно, для тех, кто использует JPA2, вы используете API критериев или это слишком тяжело для вас?

Для тех, кто знаком с критериями Hibernate и кто теперь работает с критериями JPA, какой подход вам нравится больше всего и почему?

Рассматриваете ли вы использование или использование такой структуры, как Querydsl или Spring Спецификации по JPA2 для построения предикатов запроса? Считаете ли вы, что эти рамки достаточно зрелы, чтобы их принять?

4b9b3361

Ответ 1

Я могу только предусмотреть предвзятое мнение, так как я поддерживаю Querydsl, но я думаю, что спецификации Querydsl и Spring достаточно зрелы. Оба обеспечивают тонкий слой поверх JPA 2, Querydsl обеспечивает плавный DSL для построения запроса и Spring шаблонов данных для конструкции DAO/Repository.

Экспрессия Querydsl сопоставима с HQL/JPQL.

Вот несколько запросов к критерию JPA 2 и их версии Querydsl: http://source.mysema.com/forum/mvnforum/viewthread_thread,49

Мы обеспечиваем быстрые циклы исправления ошибок и отзывчивую поддержку на наших форумах. Команда Querydsl сотрудничает с Spring, DataNucleus и другими сторонами для улучшения состояния типов запросов в Java.

Ответ 2

Нет, не нравится, из-за отсутствия выразительности и беглости в API. Да QueryDSL делает то же самое в меньшем коде, и более естественно. По этой причине мы взяли тот же маршрут для собственного API запросов API-интерфейса JDO, сравнив его с критериями JPA https://datanucleus.wordpress.com/2010/11/09/jdo-typesafe-vs-jpa-criteria/

Ответ 3

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

Когда вы привыкнете к этому, он довольно прост в использовании и по-прежнему мощный.

Одно из преимуществ: стандартное. Как и в случае с несколькими экспертами из разных организаций. Качество спецификации является несомненным, и оно все еще развивается. И вы получаете несколько реализаций (на самом деле, по крайней мере, два из них используются на самых популярных серверах приложений). Вы не понимаете, что если вы возьмете случайную структуру, которая может или не выдерживать доказательства времени.

Некоторые примеры из JPA2:

Root<Person> personRoot = query.from(Person.class);
Path firstNamePath = personRoot.get(Person_.firstName);
Predicate firstNamePredicate = criteriaBuilder.equal(firstNamePath, "Roger");
query.where(firstNamePredicate);

Вы можете сжать все это в одну строку, но я предпочитаю не делать этого, чтобы получить 100% чистый код и 1 оператор на строку.

Ответ 4

Я использую JPA2 в своих проектах и ​​всегда обнаружил, что API критериев немного сложнее, особенно для создания простых операторов выбора с несколькими условиями.

Итак, я решил продолжить использование запросов JPQL. Возможно, у Criteria API есть свои силы с более сложными запросами (помимо некоторых других преимуществ).