当前位置: 首页 > 面试题库 >

冬眠 ClassicQueryTranslatorFactory与ASTQueryTranslatorFactory

晏志明
2023-03-14
问题内容

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


问题答案:

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

来自 Hibernate
Core迁移指南: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语法“ class
bar.Foo中的from f”,请使用“ from bar.Foo as f”或“ from bar.Foo
f”。不要在已命名的HQL参数名称中使用点。注意:有一个已知的错误会影响使用theta样式的外部联接的方言(例如,OracleDialect for
Oracle
8i,TimesTen方言,Sybase11Dialect)。尝试使用支持ANSI风格的连接的方言(例如Oracle9Dialect),如果遇到问题,请使用旧的查询解析器。

这是有关此问题的论坛帖子和博客帖子。

现在问您的问题;

有什么区别?为什么我们都拥有它们?

由于在更改日志中说,休眠3个替换ClassicQueryTranslatorFactoryASTQueryTranslatorFactory。这是一个内部更改,在更改破坏您的应用程序之前,无需敦促用户。

在什么情况下我应该选择第一或第二?在什么情况下我不应该选择翻译之一?

默认情况下ASTQueryTranslatorFactory处于启用状态,仅当升级到版本3时任何查询中断时,才应考虑更改它。

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



 类似资料:
  • 另一种方法是使用Crieteria关联,但关联只能与和一起工作! 请在这里帮帮我。

  • 问题内容: 这些查询翻译器之间有什么区别(对于Hibernate用户而言,我的意思是不同)。互联网上的一些博客说基于ANTLR的翻译器更快。但是我认为,如果其中一个明显更好,那么Hibernate开发人员将删除另一个。那么..有什么区别?为什么我们都拥有它们?在什么情况下我应该选择第一还是第二?在什么情况下我不应该选择其中一位翻译? 问题答案: 这是 内部hibernate配置 ; 它将在升级到版

  • 配置类的应用程序侦听器时出现错误 这实际上是我的错误 ** 严重:配置类org的应用程序侦听器时出错。springframework。网状物上下文ContextLoaderListener java。lang.NoClassDefFoundError:javax/servlet/ServletContextListener **在爪哇。lang.ClassLoader。java上的findBoot

  • 我有一个应用程序,它使用hibernate使用注释创建初始数据库。 有人这样做过吗,如果有请告诉我怎么做。或者至少是另一种选择。是否所有的ORM更新都必须用sql脚本手动创建?

  • 我没有那么多的冬眠。所以,当反转和级联进入画面时,陷入一个点。我知道,inverse告诉hibernate拥有实体,该实体负责更新它们的关系,Cascade会告诉hibernate首先保存实体,然后保存其从属实体。 我只是想知道是否必须在同一个实体中声明级联="all"和反转="true"。我们可以通过其他实体中的反转和级联属性将一个声明为拥有实体吗?请说明这一点? 谢谢。