我刚用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;
有没有人知道为什么? 提前谢谢!