Java 冬眠。ClassicQueryTranslatorFactory vs ASTQueryTranslatorFactory

Java 冬眠。ClassicQueryTranslatorFactory vs ASTQueryTranslatorFactory,java,hibernate,parsing,Java,Hibernate,Parsing,这些查询转换器之间的区别是什么(我是指作为Hibernate用户的区别)。互联网上的一些博客说,基于ANTLR的翻译速度更快。但我认为,如果其中一个明显更好,那么Hibernate开发人员会删除另一个。所以有什么区别?为什么我们两个都有?在什么情况下我应该选择第一个还是第二个?在什么情况下我不应该选择一个转换器?这是一个内部休眠配置;当它升级到版本3时,它得到了实现。除非有充分的理由,否则您不必担心更改它。另外,对于最新版本,我认为您需要更改其默认值。但是,如果您愿意,您可以测试它以提高性能,如

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

这是一个内部休眠配置;当它升级到版本3时,它得到了实现。除非有充分的理由,否则您不必担心更改它。另外,对于最新版本,我认为您需要更改其默认值。但是,如果您愿意,您可以测试它以提高性能,如下所述

查询语言更改

新的解析器——Hibernate3附带了一个全新的、基于ANTLR的HQL/SQL查询转换器。但是,Hibernate2.1查询解析器仍然可用。可以通过设置Hibernate属性Hibernate.query.factory_类来选择查询解析器。对于新的查询解析器,可能的值是org.hibernate.hql.ast.ASTQueryTranslatorFactory,对于旧的解析器,可能的值是org.hibernate.hql.classic.ClassicQueryTranslatorFactory。我们正在努力使新的查询解析器支持Hibernate2.1允许的所有查询

但是,我们预计许多现有应用程序在迁移阶段将需要使用Hibernate2.1解析器。不再支持Hibernate 1.x语法“from f in class bar.Foo”,请使用“from bar.Foo as f”或“from bar.Foo f”。不要在命名的HQL参数名称中使用点。注意:有一个已知的bug会影响带有θ样式外部连接的方言(例如OracleDialogue for Oracle8i、TimesTen方言、Sybase11Dialogue)。尝试使用支持ANSI样式联接的方言(例如Oracle9dial),如果遇到问题,可以使用旧的查询解析器

这里是关于这个问题的论坛和博客

现在来回答你们的问题

有什么区别?为什么我们两个都有

如更改日志中所述,hibernate 3将
ClassicQueryTranslatorFactory
替换为
ASTQueryTranslatorFactory
。这是一个内部更改,用户不必为此感到惊讶,直到更改破坏了您的应用程序

在什么情况下我应该选择第一个还是第二个?在什么情况下我不应该选择一个译者

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


它再一次成为了过去的故事(2006年左右);hibernate的最新版本是4.1,现在查询转换器必须是稳定的。因此,99%的用户无需更改任何内容。

我已经看到了所有这些链接,但它们没有回答我的任何问题。