# Sekunden messen wie lange h.ibernate/jdbc abfragen brauchen



## hannibalS (22. Jan 2008)

Hallo,
ich stehe vor einem problem und zwar muss ich die zeit messen wie lange hibernate braucht um eine datenbankabfrage abzuarbeiten und wie lange für ein gleiches ergebniss eine jdbc abfrage braucht.
Da ich ein programm vor mir habe was ziemlich lahmt.
Darum will ich die Zeiten vergleichen um zu entscheiden für was ich mich entscheide.
bitte helft mir dabei dieses problem zu lösen.

Mit freundlichen Grüßen

hannibalS


----------



## maki (22. Jan 2008)

Vergleichen?
Äpfel mit Birnen?

Hibernate kann durch das caching um einiges schneller als JDBC sein, je nach Fall.

Ansonsten sieh dir die Anwedung mal im Profiler an.


----------



## hannibalS (22. Jan 2008)

profiler?


----------



## hannibalS (22. Jan 2008)

ich will dann die zeiten vergleichen um die performanc in meinem fall zu steigern


----------



## SlaterB (22. Jan 2008)

```
/**
     * Zentrale Operation für Datenbankanfragen. Nützlich, um etwa Anfragen und deren
     * Dauer zu zählen, den Ort des Aufrufs zu bestimmen und ähnliches.
     * 
     * Führt query.list() aus.
     * 
     * @param _query
     * @param _debug
     *            Debugausgabe ausschalten
     * @return die Ergebnisliste
     */
    public static List getList(Query _query, boolean _debug)
    {
        if (!_debug || !logger.isDebugEnabled())
        {
            return _query.list();
        }
        long time = System.currentTimeMillis();

        List list = null;
        try
        {
            list = _query.list();
        }
        catch (RuntimeException e)
        {
            logger.debug("Exception for Query: " + formatQuery(_query.getQueryString()));
            logger.debug(Helper.getExceptionInfo(e));
            throw e;
        }


        logger.debug("list: " + Helper.formatLong(list.size(), 7) + ", " + Helper.formatSystemTime(time)
                     + Helper.getFilteredFirstCaller());

        return list;
    }
```


----------



## kama (22. Jan 2008)

Hallo,

grundsätzlich bei Datenbank Performance Problemen:

1. Prüfen, ob die Tabellen auch Indizes haben.
    Spalten, die in Foreign-Key-Beziehungen genutzt werden, Spalten die als Abfrage Kriterium verwendet werden etc.
2. Prüfen, ob die DB-Struktur in Ordnung ist...Normalisierung etc.
3. Den Erzeugten SQL Code von Hibernate anschauen
4. Eventuell HSQL Nutzen oder eventuelle auch reines SQL nutzen

MfG
Karl Heinz Marbaise


----------



## hannibalS (22. Jan 2008)

ich muss aber die zeiten messen um dem kunden zu sagen warum ich das so gemacht habe


----------



## Giftstachel (22. Jan 2008)

wenn beides in java ist, du kannst die zeit mit hilfe von 

```
long startTime = System.currentTimeMillis();
long stopTime = System.currentTimeMillis();
long runTime = stopTime - startTime;
```

vergleichen.

beste grüße,
Giftstachel


----------

