Nas*_*LEK 5 java performance hibernate
拥有超过520个表的ERP数据库,EntityPersister的postInstanciate非常慢并且消耗超过512M,这对于仅一个会话Factory而言,应用程序变得非常慢.
我无法发布所有更改,但这里是想法:
\n1_ Hibernate 为所有实体和集合创建许多实体加载器(每个实体和每个集合有多种类型的加载器),\n此操作应按需完成,实体或集合加载器应在需要时创建,而不是在会话构建期间创建工厂,即使您有 500 个实体,也不意味着用户将从每个实体加载数据。
\n private Map LoaderMap = new LoaderMap();//instead Hashmap \n class LoaderMap extends HashMap{\n @Override\n public Object get(Object key) { \n Object obj = super.get(key);\n \xe2\x80\xa6.\n }\n }\n \n
Run Code Online (Sandbox Code Playgroud)\n2_DirectPropertyAccessor
为 buildGetter 方法调用 getDeclaredField 两次,为 buildSetter 调用两次,使用缓存是一个很好的优化
对 Ulrich Scholz 的回应:\n我将一个包含所有固定类的 jar 添加到项目中,在我的例子中,它的 Webapp 应用程序部署在 Tomcat 上,您所需要做的就是使用以下命令修复 Jars 的加载顺序:
\n<Context>\n<Resources>\n <PreResources className="org.apache.catalina.webresources.FileResourceSet"\n base="${catalina.base}/webapps/AGIWERP/WEB-INF/lib/AAACLZ-1.0.jar"\n webAppMount="/WEB-INF/lib/AAACLZ-1.0.jar" />\n</Resources>\n\n</Context>\n
Run Code Online (Sandbox Code Playgroud)\n这意味着您的类应该在原始类之前加载
\n 归档时间: |
|
查看次数: |
1746 次 |
最近记录: |