Ich habe einige Leistungsprobleme mit Hibernate, da es die Datenbank zu oft trifft. Ich untersuche einige Holstrategien. Ich möchte einige funktionale Einheitentests schreiben, damit sich meine Anwendung weiterentwickelt. Ich kann sehen, wie viele SQL-Anweisungen aufgerufen werden.SQL-Anweisungen in Hibernate zählen
Ich möchte wissen, ob ich zählen kann, wie viele SQL-Anweisungen aufgerufen werden. Im Moment setze ich show-sql auf true und zähle dann die SQLs in der Konsole. Ich möchte dies möglichst im Code tun. Ist es möglich zu zählen, wie viele SQLs im Ruhezustand die DB mit in Code trifft?
Dank
EDIT
Nach @Aleksander Blomskøld Antwort ....
Mein Testfall ist
StatisticsService statisticsService = new StatisticsService();
Session session = entityManager.unwrap(Session.class);
statisticsService.setSessionFactory(session.getSessionFactory());
statisticsService.setStatisticsEnabled(true);
List<MyType> r= entityManager.createQuery("from MyType", MyType.class).getResultList();
System.out.println(statisticsService.getQueryExecutionCount());
System.out.println(statisticsService.getQueries()[0]);
Die Abfrage Ausführungszahl als 1 gegeben ist und wenn Ich schaue auf die Abfrage, es heißt, dass es "von MyType"
0 istIn den SQL-Anweisungen im Protokoll kann ich jedoch sehen, dass es SQL-Anweisungen gibt, um MyType und viele zugehörige Klassen abzurufen. In der Tat möchte ich alle SQLs wissen, die die DB wegen des "von MyType" Anrufs treffen.
Was benötige ich klarer? Oder bin ich einfach zu mißbrauchen der StatisticService
Dank
Ihre Datenbank wahrscheinlich bessere Möglichkeiten hat Heuristik auf diese zu bekommen, als „Zählen SQLs“. Ich denke du meinst "SQL-Anweisungen zählen" übrigens. –
korrigieren @tieTYT es ist Aussagen - haben den Code aktualisiert – RNJ
Vielleicht könnten Sie Nprof betrachten? –