Eine Frage des Geschmacks?

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,

ich stehe gerade erst am Anfang, im Bezug auf EJB, dennoch habe ich bereits jetzt schon ein paar fragen.

Für die Verbindung zur Datenbank benötigt man ja im Grundsatz zwei Dateien:

  • - zum einen die ...-ds.xml (z.B.:eek:racle-ds.xml, postgres-ds.xml)
    - und die persistence.xml im EJB-Projekt.

Wo wären jetzt die Daten, wie z.B. das Passwort und der Username besser aufgehoben?
In der persistence.xml wäre es ja unpraktisch, die jar jedesmal zu öffnen, und die entsprechenden Daten für den Server einzutragen.
In der -ds.xml hat das auch einige nachteile... jeder der auf dem Server kommt, kann das Passwort für die DB einsehen, wobei man hier beachten sollte, das jeder der zugriff zum Server hat auch dazu berechtigt sein sollte das Passwort einsehen zu dürfen. Also nach dem Motto: "Dies ist ein Mitarbeiter, dem ich vertrauen kann. Es ist also egal, das er das Passwort herausfinden könnte."

Ich arbeite am liebsten mit dem JBoss, dieser lässt ja scheinbar Hibernate für sich arbeiten. Nun kann ich ja den Dialect für Hibernate in der persistence.xml einstellen, was aber wenn ich mein Projekt im Netz ausstelle und jeder soll es nutzen können, woher soll ich bereits zur Entwicklungszeit wissen, welchen Server mein Anwender später nutzt?
Kann man an dieser Stelle irgendwas machen, außer die Datei in der entsprechenden jar zu ändern?

Wie ihr seht stehe ich dem Ändern der jar für die EJB's ziemlich skeptisch gegenüber...

Desweiteren, was ist, wenn ich meine Objekte aus der Datenbank genau so wie sie sind in der jsp oder im Servlet benutzen will (Also ich möchte nur Ausgaben erfolgen lassen, ohne jegliche Berechnungen, die kommen erst nach der Bearbeitung durch den User)? Sollte man denn das SQL-Statement in der jsp stellen oder sollte man hier doch lieber eine Session Bean nehmen, die denn die Objekte aus der DB holt und denn weiterreicht? Oder eine Dritte Möglichkeit, man lässt die Objekte von der Datenbank per Sessionbean laden und schickt diese denn als xml Datenstrom weiter... wobei ich diese Lösung doch als ein bisschen fragwürdig empfinde.

Wie sieht es mit den NamedQueries aus? Falls man hier die Daten abholt, und diese sortieren lassen will, sollte man dies vom SQL Server erledigen lassen oder sollte man erst in den Session Beans sortieren lassen? Denn würden hier doch unnötig viele Objekte geladen werden oder nicht?

Vielen Dank schon einmal im voraus.
 
M

maki

Gast
Meine Meinung:
Du änderst Quellcode, Konfiguration, DB Passwörter und URL, etc., -> du brauchst du einen neuen Release.
 
G

Guest

Gast
In persistence.xml nennst du nur den JNDI-Namen der Datenquelle an (zumindest, wenn es auf einem
Applicationserver läuft). Wie die entsprechende Datenquelle konfiguriert ist, ist von Server zu Server
unterschiedlich. Bei JBoss gibt es leider bis heute keine vernünftige Konfigurationsconsole, die entsprechenden
Dateien sind aber im server/default/deploy Verzeichnis zu finden (siehe *-ds.xml).
Da drin stehen auch die Zugangsdaten zur Datenbank.
z.B. h2-ds.xml
Code:
<datasources>
  <local-tx-datasource>
    <jndi-name>jdbc/h2ds</jndi-name>
    <connection-url>jdbc:h2:tcp://localhost/h2db</connection-url>
    <driver-class>org.h2.Driver</driver-class>
    <user-name>user</user-name>
    <password>password</password>
    <metadata>
       <type-mapping>Hypersonic SQL</type-mapping> 
    </metadata>
    <min-pool-size>1</min-pool-size>
    <max-pool-size>10</max-pool-size>
  </local-tx-datasource>
</datasources>
Die EntityManagerFactory lässt sich aber auch ohne die persistence.xml initialisieren. Siehe dazu API-Dokumentation.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben