Это внутренняя конфигурация гибернации ; который был реализован при обновлении до версии 3. Вам не стоит беспокоиться о его изменении до тех пор, пока для этого нет веской причины . Также с последними версиями я думаю, что вам нужно изменить значение по умолчанию. Но если вы хотите, вы можете проверить его на повышение производительности, как указано ниже.
Из Руководства по миграции ядра Hibernate: 3.0 ;
Изменение языка запросов
Новый анализатор - Hibernate3 поставляется с совершенно новым, основанным на ANTLR переводчиком запросов HQL / SQL. Однако парсер запросов Hibernate 2.1 по-прежнему доступен. Парсер запросов может быть выбран путем установки свойства Hibernate hibernate.query.factory_class. Возможные значения: org.hibernate.hql.ast.ASTQueryTranslatorFactory для нового анализатора запросов и org.hibernate.hql.classic.ClassicQueryTranslatorFactory для старого синтаксического анализатора. Мы прилагаем все усилия, чтобы новый анализатор запросов поддерживал все запросы, разрешенные Hibernate 2.1.
Однако мы ожидаем, что многим существующим приложениям потребуется использовать анализатор Hibernate 2.1 на этапе миграции. Синтаксис Hibernate 1.x «from f в классе bar.Foo» больше не поддерживается, используйте «from bar.Foo as f» или «from bar.Foo f». Не используйте точки в именованных именах параметров HQL. Примечание: существует известная ошибка, затрагивающая диалекты с помощью внешних объединений в тета-стиле (например, OracleDialect для Oracle 8i, диалект TimesTen, Sybase11Dialect). Попробуйте использовать диалект, который поддерживает соединения в стиле ANSI (например, Oracle9Dialect), или используйте старый анализатор запросов, если у вас возникли проблемы.
Вот форум пост и блог пост относительно этой проблемы.
Теперь перейдем к вашим вопросам;
в чем разница и почему у нас их обоих?
Как сказано в журнале изменений, hibernate 3 заменяет ClassicQueryTranslatorFactory
на ASTQueryTranslatorFactory
. Это внутреннее изменение, и пользователям не нужно беспокоиться об этом, пока оно не сломает ваше приложение.
В каких ситуациях я должен выбрать первый или второй? В каких ситуациях мне не следует выбирать одного из переводчиков?
По умолчанию ASTQueryTranslatorFactory
включено, вы должны рассмотреть возможность его изменения, только если какой-либо из ваших запросов прервется при обновлении до версии 3.
Еще раз, это история прошлого (2006 или около того); последняя версия hibernate - 4.1, и переводчик запросов уже должен быть стабильным. Так что 99% вам не нужно ничего менять.