java - 如何减少 Hibernate SessionFactory 内存使用和加载时间

标签 java performance hibernate

我有一个包含大约 3000 个实体类的应用程序。

由于大量的类,SessionFactory 对象消耗大约 150 MB 的内存,并且需要将近一分钟的时间来设置(处理所有类、生成代理和构建元模型)。
在对过程进行分析后,我发现有一分钟的时间花在了 org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory 上。而一半在 org.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(EntityMetamodel, PersistentClass) 中.
我正在寻找减少 SessionFactory 的方法内存使用和加载时间。
一种想法是将类增强移动到编译时,但我没有找到太多相关信息。
实体的数量是我无法改变的事实,但如果有人对如何处理他们的数据库访问(Hibernate 除外)有更好的想法,我将很高兴听到。

最佳答案

3000 节课对我来说听起来太疯狂了。
你所说的“类增强”是什么意思?
我认为您应该仔细重新考虑您的应用程序的设计。
Hibernate 大量使用 Proxy 对象(例如,当您运行 setter 时,Proxy 会“聚合”此更改,因此 Hibernate 可以生成仅包含已更改字段的更新 SQL)。 Hibernate 还使用代理使用的内存中的类信息(如上所述),这就是你的内存增长成这样的原因

关于java - 如何减少 Hibernate SessionFactory 内存使用和加载时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12710797/

相关文章:

.net - "Spike"探查器?

java - 安卓应用程序 : Java crash when clicking on button that should display a random image

java - 收集具有最大长度的所有字符串的列表

java - 如何关闭 Java 中 TextArea 中闪烁的光标?

mysql - 在 MySQL 中找到最接近整数的最有效方法?

ruby - 为什么 array.index 比 array.include 快?

java - Hibernate:如何将R(选择器,键,*)中的不同选择器映射到不同字段?

java.lang.ClassCastException : org. hibernate.type.DateType 无法转换为 org.hibernate.type.VersionType

java - HTTP 状态 400 - 客户端发送的请求在语法上不正确。 - 在使用 Hibernate 的 Spring MVC Web 应用程序中

java - 存储和操作我的数据的最佳数据结构?