使用获取的对象太慢了

时间:2017-04-04 15:36:38

标签: java performance hibernate

编辑:这不是我每次创建会话对象的问题,它不好但在这种情况下不是真正的原因。

我刚用Hibernate构建了一个使用MySql数据库的应用程序。

我有一段如下代码:

List<FitArticle> articleList = new ArrayList<>();
PerformanceTest.setStarttime();
articleList = db.getArticleByFilter(Filter.STANDARD);
PerformanceTest.printTime("Getting Articles");

PerformanceTest.setStarttime();
List<FitArticle> articleNewList = new ArrayList<>();
articleNewList.add(articleList.get(0));

System.out.println(articleList.size());
controller.renderPage(articleList, page,firstCall);                     
PerformanceTest.printTime("Rendering");

通过使用只测试时间间隔的PerformanceTest,得到的结果是获取对象列表(300项)只需要200ms或类似的东西。但是使用这些新获取的对象比使用JDBC时更长。

为清楚起见,通过使用对象,我的意思是将对象渲染为html Web视图。

此外,我试图通过使用YourKit Java Profiler来确定问题的确切方法,以确定哪些方法花了这么长时间并且在表格的顶部(距离比任何其他方法更长):

java.lang.ClassLoader.loadClass(String)

这个

  

long.org.hibernate.internal.SessionImpl.initializeCollection(PersistentCollection,boolean)

     

这个最让我困扰的是因为它在我的程序中多次调用。

我用来获取对象的Methode:

List<FitArticle> list = new ArrayList<FitArticle>();
Session session = factory.openSession();
Transaction tx = null;
Criteria crit = session.createCriteria(FitArticle.class);
// Here some lines to modify Criteria.
list= crit.list();
return list;

有没有人知道为什么? 提前谢谢!

0 个答案:

没有答案