gpt4 book ai didi

java - hibernate 。 ClassicQueryTranslatorFactory 与 ASTQueryTranslatorFactory

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:23:38 25 4
gpt4 key购买 nike

这些查询翻译器之间有什么区别(我的意思是作为 Hibernate 用户的区别)。互联网上的一些博客说基于 ANTLR 的翻译器更快。但我认为,如果其中一个明显更好,那么 Hibernate 开发人员会删除另一个。那么..有什么区别,为什么我们同时拥有它们?在什么情况下我应该选择第一还是第二?在什么情况下我不应该选择其中一位翻译人员?

最佳答案

这是一个内部 hibernate 配置;它在升级到版本 3 时得到实现。除非有任何充分的理由,否则您不必担心更改它。同样对于最新版本,我认为您需要更改其默认值。但是,如果您愿意,可以按照下面的说明对其进行测试以提高性能。

来自 Hibernate Core Migration Guide : 3.0 ;

Query Language Changes

New Parser - Hibernate3 comes with a brand-new, ANTLR-based HQL/SQL query translator. However, the Hibernate 2.1 query parser is still available. The query parser may be selected by setting the Hibernate property hibernate.query.factory_class. The possible values are org.hibernate.hql.ast.ASTQueryTranslatorFactory, for the new query parser, and org.hibernate.hql.classic.ClassicQueryTranslatorFactory, for the old parser. We are working hard to make the new query parser support all queries allowed by Hibernate 2.1.

However, we expect that many existing applications will need to use the Hibernate 2.1 parser during the migration phase. The Hibernate 1.x syntax "from f in class bar.Foo" is no longer supported, use "from bar.Foo as f" or "from bar.Foo f". Don't use dots in named HQL parameter names. Note: there is a known bug affecting dialects with theta-style outer joins (eg. OracleDialect for Oracle 8i, TimesTen dialect, Sybase11Dialect). Try to use a dialect which supports ANSI-style joins (eg. Oracle9Dialect), or fall back to the old query parser if you experience problems.

这里是论坛post和一个博客 post关于这个问题。

现在回答您的问题;

what's the difference and why do we have both of them?

如更改日志中所述,hibernate 3 将 ClassicQueryTranslatorFactory 替换为 ASTQueryTranslatorFactory。这是一项内部更改,在更改破坏您的应用程序之前,用户无需担心。

In what situations should I choose first or second?In what situations I shouldn't choose one of translators?

默认情况下 ASTQueryTranslatorFactory 已启用,只有在升级到版本 3 时任何查询中断时才应考虑更改它。

再一次,这是一个过去的故事(2006 年左右); hibernate 的最新版本是 4.1,查询翻译器现在必须稳定。所以 99% 你不需要改变任何东西。

关于java - hibernate 。 ClassicQueryTranslatorFactory 与 ASTQueryTranslatorFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9909709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com