Для меня Критерии довольно легко понять и сделать динамические запросы. Но недостаток, о котором я говорю до сих пор, заключается в том, что он загружает все отношения между несколькими и т. Д., Потому что у нас есть только три типа FetchModes, то есть Select, Proxy и Default, и во всех этих случаях он загружает много-один (может быть, я ошибаюсь, если так помогает me out :))
2-я проблема с критериями заключается в том, что она загружает полный объект, т. е. если я хочу просто загрузить EmpName сотрудника, он не придумает, что он придумал полный объект Employee, и я могу получить EmpName из из-за этого это действительно плохо работает в отчетности. где, поскольку HQL просто загружает (не загружает ассоциацию/отношения), что вы хотите увеличить производительность во много раз.
Одна из особенностей критериев заключается в том, что она будет безопасна от SQL Injection из-за ее генерации динамических запросов, где, как и в HQL, поскольку запросы ur являются либо фиксированными, либо параметризированными, поэтому не являются безопасными от SQL Injection.
Также, если вы пишете HQL в файлах urpx.cs, вы тесно связаны с ур DAL.
В целом, мой вывод состоит в том, что есть места, где вы не можете жить без отчетов HQL, поэтому используйте их иначе. Критерии легче управлять.
Правильный ответ будет «зависит от варианта использования». – Hace 2011-01-08 23:22:51
А как насчет [этого инструмента] (https://github.com/knyttl/Maite/wiki/Maite-Persistence)? Он позволяет создавать общие запросы объектным способом: protected Clause select() {return em.select ("DISTINCT i"). From (this.getName(), "i") .joinFetch ("i.locale lf"). } public T findBySlug (String slug) {return (T) this.select() .join ("i.locale l"); .where ("l.slug =?", slug) .fetchSingle(); } – 2012-02-16 10:22:35
Определение мнения, основанного на мнениях, но люди не воспользовались возможностью, чтобы закрыть его ... по сайту FAQ – 2017-05-17 17:22:37