休眠和资源利用率

Jak*_*kub 1 java database hibernate

我在办公室讨论是否使用Hibernate.目前我们的代码使用纯jdbc和sql语句来获取我们需要的数据.您可以想象这会使我们的代码难以维护.我建议切换到Hibernate以使我们的代码看起来更好.但是,我们的应用程序需要具有高性能(在时间和内存利用方面).我的同事一直认为切换到Hibernate会让我们获取不必要的数据,因此使我们的应用程序变慢并消耗更多的RAM内存.

这是真的吗?我们可以使用任何技巧吗?我可以在与同事的讨论中使用任何论据吗?

谢谢!

Tho*_*hor 5

首先,对于大多数应用程序,在高性能和低内存之间存在折衷.如果你想要两者,你通常必须考虑其他权衡,例如在你的JDBC应用程序中的可维护性.

您可以向您的同事争论,对于所有关系,可以指定获取类型:

  • EAGER - 在加载bean时获取字段
  • LAZY - 仅在使用该字段时获取字段

这在bean受实体管理器控制时发生.如果远程获取对象,则无法进行额外的LAZY加载.但问题是,如果Hibernate是满足您需求的解决方案,则很大程度上取决于应用程序的性质.

如果有一个Web应用程序和庞大的对象图是如果你正在使用JPA/Hibernate和例如像缝,因此有很大的好处(甚至在你的JSF管理的bean),实体管理器控制下的所有对象.在那里,您不必关心对象图中实际需要哪些字段,因此不需要在此问题中花费任何单行代码.

但是,如果您进行例如科学或财务计算,那么通过定制(以及大型,复杂且难以维护)的SQL语句,您可以更快地获得所需的一切.对于我的开发,如果可能的话我使用JPA(并在后端Hibernate中).更清洁的代码对我们来说比一些微秒更快的计算时间更重要.