Hibernate version:2.1.8
Database: Oracle 10g
Application Server: WebLogic 10.3
Meine Anwendung greift mit Hibernate-2.1.8 auf eine Oracle 10g Datenbank zu. Die Anwendung läuft in WebLogic-10.3. Hibernate benutzt eine WebLogic Datasource. Die Datasource benutzt den in WebLogic-10.3 enthaltenen Oracle JDBC Treiber von Oracle.
Hibernate benutzt in dieser Umgebung keine prepared statements. Die JDBC Performance ist dadurch sehr schlecht.
Ich habe dieselbe Anwendung in JBoss-4.2 mit derselben Datenbank getestet. In JBoss werden prepared statements benutzt. Weiter unten habe ich 2 SQL Statements angehängt, die Hibernate aus demselben HQL Statement in WebLogic und JBoss erzeugt hat.
Warum erzeugt Hibernate in WebLogic ein anderes SQL Statement aus demselben HQL Statement als in JBoss?
Wie aktiviere ich prepared statements in der Oracle Datasource in WebLogic?
SQL Log Beispiel:
WebLogic-10.3:
Code:
SELECT DISTINCT
REIFENFELG0_.EOL_REIFEN_ID AS X0_0_, REIFENFELG0_.GROESSE AS X1_0_, REIFENFELG0_.NOTLAUF_X AS X2_0_, REIFENFELG0_.SOMMER_WINTER AS X3_0_, REIFENFELG0_.GUELTIG_VON AS X4_0_, REIFENFELG0_.GUELTIG_BIS AS X5_0_, REIFENFELG0_.TYP_JATO_ID AS X6_0_
FROM
EOL_REIFEN REIFENFELG0_
WHERE (((((((REIFENFELG0_.GROESSE LIKE '225/55R16%' ))
OR((REIFENFELG0_.GROESSE IS NULL )))
AND((REIFENFELG0_.NOTLAUF_X IS NULL )))
AND(((REIFENFELG0_.SOMMER_WINTER= 'S' ))
OR((REIFENFELG0_.SOMMER_WINTER IS NULL ))))
AND((((REIFENFELG0_.GUELTIG_BIS>= {TS '2008-11-11 10:39:56.003' } ))
OR((REIFENFELG0_.GUELTIG_BIS IS NULL )))
AND(((REIFENFELG0_.GUELTIG_VON<= {TS '2008-11-11 10:39:56.003' } ))
OR((REIFENFELG0_.GUELTIG_VON IS NULL )))))
AND(((REIFENFELG0_.TYP_JATO_ID= 720 ))
OR((REIFENFELG0_.TYP_JATO_ID IS NULL ))))
JBoss-4.2
Code:
SELECT DISTINCT
REIFENFELG0_.EOL_REIFEN_ID AS X0_0_, REIFENFELG0_.GROESSE AS X1_0_, REIFENFELG0_.NOTLAUF_X AS X2_0_, REIFENFELG0_.SOMMER_WINTER AS X3_0_, REIFENFELG0_.GUELTIG_VON AS X4_0_, REIFENFELG0_.GUELTIG_BIS AS X5_0_, REIFENFELG0_.TYP_JATO_ID AS X6_0_
FROM
EOL_REIFEN REIFENFELG0_
WHERE (((((((REIFENFELG0_.GROESSE LIKE '205/55R16%' ))
OR((REIFENFELG0_.GROESSE IS NULL )))
AND((REIFENFELG0_.NOTLAUF_X IS NULL )))
AND(((REIFENFELG0_.SOMMER_WINTER= 'S' ))
OR((REIFENFELG0_.SOMMER_WINTER IS NULL ))))
AND((((REIFENFELG0_.GUELTIG_BIS>= ? ))
OR((REIFENFELG0_.GUELTIG_BIS IS NULL )))
AND(((REIFENFELG0_.GUELTIG_VON<= ? ))
OR((REIFENFELG0_.GUELTIG_VON IS NULL )))))
AND(((REIFENFELG0_.TYP_JATO_ID= ? ))
OR((REIFENFELG0_.TYP_JATO_ID IS NULL ))))