2016-06-01 11 views
0

Ich muss eine PLSQL-Prozedur für jede Verbindung aufrufen, die Hibernate für mich generiert. Der Hintergrund ist, dass unser Datenbankserver nur Operationen mit Sitzungen erlaubt, die bereits durch einen bestimmten PLSQL-Aufruf initialisiert wurden.Hibernate: Aufrufen einer PLSQL-Prozedur für jede Verbindung

Also meine Frage ist, wo kann ich mich registrieren, um neue Verbindungen zu hören und die Prozedur auf dem Server aufzurufen.

Grüße, Johannes.

+0

Willkommen bei SO! Um bessere Antworten zu erhalten, geben Sie bitte Informationen darüber an, mit welcher Technologie Sie Ihre Datenquellen für Hibernate erstellen. Zum Beispiel ermöglicht die Datenquellenkonfiguration von Tomcat dies mit initSQL: https://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html#Tomcat_JDBC_Enhanced_Attributes – Brian

Antwort

0

Wenn Sie SessionFactory injizieren, verwenden Sie .getCurrentSession(), wenn Sie SessionManager selbst erstellen und verwalten - Benutzer .createSession() (ich glaube, es heißt so?). Verwenden Sie dann .createNativeQuery() und execute(), um den Prozeduraufruf auszuführen.

+0

Hallo, danke für deine Antwort. Ich vergesse zu erwähnen, dass ich auf einem Server in einer JPA-Umgebung bin. Ich habe also nur etwas wie Persistence.createEntityManagerFactory ("db") und entityManagerFactory.createEntityManager(). Irgendwelche Ideen für diese Umgebung? – Johannes

+0

'EntityManagerFactory emFactory = Persistence.createEntityManagerFactory (" db ");' // 'db' Name muss hier in persistence.xml auch sein // dann statt .createSession() dies: 'EntityManager manager = emFactory.createEntityManager (); ' arbeiten mit EntityManager ist ein wenig anders als mit Session, verwenden Sie Javadoc. Dies ist jedoch für manuelle Kontrolle über Manager: Sie müssen 'manager.close();' nach allem fertig. – JollyRoger

Verwandte Themen