如何解决HibernateClassicQueryTranslatorFactory与ASTQueryTranslatorFactory
这是 ; 它将在升级到版本3时实施 您 。同样,对于最新版本,我认为您需要更改其默认值。但是,如果您愿意,可以按照以下说明进行测试以提高性能。
来自 ;
新的解析器-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语法“类bar.Foo中的from f”,请使用“ from bar.Foo as f”或“ from bar.Foo f”。不要在已命名的HQL参数名称中使用点。注意:有一个已知的错误会影响使用theta样式的外部联接的方言(例如,OracleDialect for Oracle 8i,TimesTen方言,Sybase11Dialect)。尝试使用支持ANSI风格的联接的方言(例如Oracle9Dialect),如果遇到问题,请使用旧的查询解析器。
现在问您的问题;
有什么区别?为什么我们都拥有它们?
由于在更改日志中说,hibernate3个替换ClassicQueryTranslatorFactory
用ASTQueryTranslatorFactory
。这是一个内部更改,在更改破坏您的应用程序之前,无需大声疾呼用户。
在什么情况下我应该选择第一或第二?在什么情况下我不应该选择翻译之一?
默认情况下ASTQueryTranslatorFactory
处于启用状态,仅当升级到版本3时任何查询中断时,才应考虑更改它。
再一次,它是一个过去的故事(2006年左右);hibernate的最新版本是4.1,并且查询转换器现在必须稳定。因此,有99%的人无需更改任何内容。
解决方法
这些查询翻译器之间有什么区别(对于Hibernate用户而言,我的意思是不同)。互联网上的一些博客说基于ANTLR的翻译器更快。但是我认为,如果其中一个明显更好,那么Hibernate开发人员将删除另一个。那么..有什么区别?为什么我们都拥有它们?在什么情况下我应该选择第一还是第二?在什么情况下我不应该选择其中一位翻译?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。