In diesem Artikel wird beschrieben, wie Hibernate mithilfe eines benutzerdefinierten Datenbankverbindungspools erweitert wird. Teilen Sie es für Ihre Referenz wie folgt weiter:
Während des Winterschlafes stoßen wir häufig auf dieses Problem: Unsere fertigen Produkte verwenden bereits unseren eigenen Datenbankverbindungspool. Wenn wir Hibernate verwenden, müssen wir auch Datenbankverbindungsinformationen in der Hibernate -Konfiguration konfigurieren. Dies erfordert die Aufrechterhaltung der Datenbankverbindungsinformationen an zwei Stellen, die sich für die Wartung sehr umständlich anfühlen.
Da wir zu Beginn der Produktentwicklung keinen Hibernate beigetreten haben, ist es nicht angebracht, dass das Produkt den Verbindungsbecken von Hibernate direkt verwenden. Wir mussten den Hibernate den eigenen Verbindungspool des Produkts verwenden lassen. Glücklicherweise hat Hibernate eine Erweiterungsschnittstelle für den Connection Pool: ConnectionProvider bereitgestellt.
Hibernate selbst verwendet die ConnectionProvider -Schnittstelle, um Datenbankverbindungen zu verwalten. Zum Beispiel sein eigener C3P0ConnectionProvider, ProxoolConnectionProvider usw., schreiben wir eine Klasse, die die ConnectionProvider -Schnittstelle implementiert. In der Hibernate -Konfigurationsdatei ist es in Ordnung, die entsprechenden Parameter in diese Klasse zu ändern. Der relevante Code ist wie folgt:
Der folgende Code wird verwendet, um die vorherige Konfiguration der Datenbankverbindungsinformationen in hibernate.cfg.xml zu ersetzen:
<!-benutzerdefinierte-Verbindungspool mit NMS-Produkten-> <Eigenschaft name = "hibernate.connection.provider_class"> com.shine.sourcedesk.jbpm.nmsConnectionProvider </Property>
Klassen, die ConnectionManager -Schnittstelle implementieren:
Paket com.Shine.Sourcedesk.jbpm; Import Java.Sql.Connection; Import Java.sql.sqlexception; Import Java.util.Properties; Passen Sie den Hibernate -Verbindungspool an, lassen Sie den Hibernate den ConnectionManager des Produkts verwenden * @Author Jiangkunpeng * */public class nmsConnectionProvider implementiert ConnectionProvider {@Overridepublic void void () löscht die HibernateException {} @Overridepublic void Closeconnection (Verbindung) Throws SQLEXCECTION {//CLECT THEGLAUSE (Verbindung) Throws SQLEXTECLECTION {//CLECT THEGLAUSE {//Cht the -Throw ConnectionManager.CLOSE (Verbindung);}@oversidePublic void configure (Eigenschaften Eigenschaften) löst HibernateException {} @OverridePublic Connection getConnection () aus SQLEXception {// Verwenden Sie den Datenbankverbindungspool des Produkts, um den Connection Return -ConnectionManager zu erhalten. FALSCH;}Ich hoffe, dass die Beschreibung in diesem Artikel für Java -Programme aller hilfreich ist, die auf dem Hibernate -Framework basieren.