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

休眠性能

韦棋
2023-03-14
问题内容

我有问题,也许有人认为它很愚蠢。Hibernate快吗?我在系统中使用它,对数据库的查询非常多。并且性能变得警觉。和其他问题脱离当前背景。有什么更好的选择-
许多简单查询(使用单个表)还是较少一些查询的查询?

先进的坦克的Artem


问题答案:

首先,您可以做很多事情来加快Hibernate的速度。查阅这些高性能hibernate技巧文章,以全面了解可以采取哪些措施来加快数据访问层的速度。

使用“许多”查询,您将遇到典型的N + 1查询问题。您可以使用具有相关对象的Hibernate加载实体。使用LAZY联接,您将对每个记录都得到一个查询。每个查询都通过网络到达数据库服务器,并返回数据。这都需要时间(打开连接,网络延迟,查找,数据吞吐量等)。

对于单个查询(具有联接),查找和数据吞吐量大于多个查询。但是您只能一次打开连接和网络延迟。因此,使用100个或更多查询时,您的查询和数据吞吐量较小,但您将获得100倍的查询次数(包括打开连接和网络延迟)。

单个查询需要20毫秒。vs 100条查询需要1毫秒。?你做数学;)

并且如果可以增长到1000条记录。单个查询对性能的影响很小,但是1000个查询与100个查询的关系是10倍。因此,使用多个查询,您将大大降低性能。

使用HQL查询检索数据时,可以将FETCH添加到JOIN,以便使用相同的查询加载数据(使用JOIN的查询)。

有关与此主题相关的更多信息,请查看此Hibernate Performance
Tuning

Tutorial。



 类似资料:
  • 问题内容: 我有一个Spring和Hibernate3在生产中运行良好的应用程序。以下是Spring的applicationContext.xml中会话工厂的配置 生产正常。 现在,对于另一个项目,我们正在迁移到Hibernate4。我们使用org.springframework.orm.hibernate4。*包中的Hibernate 4的SessionFactory,TransacionMan

  • 问题内容: 这是一个Hibnerate多态性问题和一个数据模型设计问题。他们交织在一起。过去我曾经使用过Hibernate,并且很喜欢它,但是有时候我发现很难想到除了琐碎的设计之外的任何事情。不能敲打hibernate;只是观察到ORM通常可能具有挑战性。 我认为这是一个Hibernate 101问题,但我不确定。我试图实现的目标甚至不可能。 我有一个抽象类Fruit,它将被分为Apple和Ora

  • 问题内容: 我正在建立一对多的关系。所以,我有一个父母和一个孩子。级联属性设置为全部。 我想知道我们是否考虑以下代码: Q1)如果父级拥有该关系,如,对于父级inverse = false,那么是否会在数据库中更新子级元素? Q2)如果孩子拥有关系,如,对于父inverse = true,则是否会在数据库中更新子元素添加? Q3)在是否可以看到更新的方面,谁拥有关联关系对上述代码没有影响? 非常感

  • 问题内容: 我正在使用Hibernate 3编写Web应用程序。 所以,过了一会儿,我注意到有些东西很慢。因此,我测试了Hibernate Profiler,发现Hibernate将无理地进行许多数据库调用以简化操作。原因当然是我加载了一个对象(该对象有几个“父母”),而这些“父母”还有其他“父母”。因此,即使我只需要基本对象,从根本上来说,hibernate都会加载它们。好的,所以我研究了延迟加

  • 问题内容: 我在映射类的嵌入式属性时遇到麻烦。我创建了一些类,这些类与我试图说明的类相似。基本上,我有一个使用继承的@Embeddable类层次结构。顶级类“零件号”仅具有一个属性,扩展类未向“零件号”类添加任何属性,它们仅添加了一些验证/逻辑。 这是我的意思: 部分 零件号 福特PARTNUMBER 高贵的零件编号 当然这是行不通的,因为Hibernate忽略了继承层次结构,并且不喜欢PartN

  • 问题内容: 我们将Java blazeedshibernate与flex项目集成在一起。首先,我们在eclipse中测试了纯Javahibernate,并且执行良好。但是,当我们将相同的东西放入tomcat中进行火焰集成时,它会显示以下错误,这是唯一的错误。 这是hibernate.cfg.xml(要识别是否未找到hibernate.cfg.xml,我通过删除.cfg.xml的DOCTYPE进行测