Warum bindet Hibernate SessionFactory an eine JNDI-Ressource?

8

In meinem aktuellen Abenteuer des Erlernens des Ruhezustands und der Einrichtung des Verbindungspools eines Anwendungsservers weisen die meisten Beispiele und Ressourcen darauf hin, dass die SessionFactory dabei an eine JNDI-Ressource auf Ihrem Anwendungsserver gebunden wird.

>

Ich frage mich, was der Vorteil davon ist? Da Sie auf den Verbindungspool zugreifen können, ohne dies zu tun.

    
Jacob Schoen 24.03.2010, 19:24
quelle

1 Antwort

10

Aus demselben Grund, mit dem Sie JNDI für alles verwenden würden, würde ich sagen - die Konfiguration aus der Anwendung in die Implementierungsumgebung verschieben.

Mit JNDI sagen Sie grundsätzlich "Diese Anwendung benötigt ein SessionFactory ; und ihr Name soll X sein" und Sie sind glücklich, solange der Anwendungsserver ein SessionFactory namens X konfiguriert hat. Diese Art der Externalisierung hat mehrere attraktive Vorteile:

  1. Sie können sehr unterschiedliche Konfigurationen auf verschiedenen Rechnern verwenden (Produktion und Qualitätssicherung verwenden Oracle, Entwickler verwenden HSQL, ...).

  2. Sie müssen Ihren Build-Prozess nicht über Konfigurationen informieren (nicht mehr ant war_for_qa oder sich mit Maven-Profilen herumschrauben).

  3. Sie sind nicht versucht, Konfigurationen in Versionskontrolle zu überprüfen, und so wird Ihr Live-Datenbankpasswort nicht jedem Temp, Praktikanten, Berater oder Ex-Mitarbeiter bekannt sein, der jemals Zugang hatte (oder haben wird!) zum Repository.

  4. Ihre Installations- / Konfigurationsanweisungen enthalten keine Elemente wie "Konfigurieren der Datenbankanmeldung, Bearbeiten der Datei foo.properties in der WAR-Datei", was unweigerlich dazu führt, dass Konfigurationen im schlimmsten Fall auf dem Produktionsserver überschrieben werden Möglicher Moment, weil ein Systemadministrator, der das ganze Wochenende gearbeitet hat, zufällig einen nicht editierten KRIEG eingesetzt hat, weil der Kaffee am Sonntagnachmittag ausgegangen ist.

JNDI ist zufällig der "Standard" Weg, diese Externalisierung in Java durchzuführen, was bedeutet, dass neue Entwickler / Admins keine zwei Tage Training benötigen, um die Eigenheiten Ihres eigenen, selbst gebastelten Konfigurationssystems zu lernen ist ziemlich clever, hat aber diesen seltsamen Bug, in den sich niemand vertiefen will, weil es wirklich seltsam ist und jeder, der es hat, einen ziemlich einfachen Workaround hat, & amp; c.

Damit verbunden: Was ist der Zweck von JNDI?

    
gustafc 30.03.2010, 23:20
quelle

Tags und Links