Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 0
  • 361

Poniżej przedstawiam fragment pliku persistence.xml potrzebnego do konfiguracji połączenia z bazą danych w JPA (Hibernate).

To jest niestety taka konfiguracja na sztywno "z konkretną bazą na konkretnym komputerze". Ja bym chciał, aby mój program wczytywał z pliku parametry połączenia tj. usser, password, baza itd.

Niestety nie wiem jak umieścić te wczytane z pliku zmienne w pliku persistence.xml. Na przykład zamiast value="postgres" zapis value = użytkownik (zmienna).


<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" />
<property name="javax.persistence.jdbc.user" value="postgres" />
<property name="javax.persistence.jdbc.password" value="12345" />
<property name="javax.persistence.jdbc.url"value="jdbc:postgresql://localhost:5432/MojaBaza" />



Mam nadzieję, że to jasno to opisałem.

 

Sławomir_Głowacki
  • Zapytał
  • @ Sławomir_Głowacki | 17.07.2015
    • 2
    • 1
    • 1

Odpowiedź (1)

  • 1

Rozumiem, że problem sprowadza się do możliwości programowej zmiany właściwości ustawionych w pliku persistence.xml.

Można tego dokonać na dwa sposoby:

1. W pliku XML można użyć zmiennych systemowych o postaci ${nazwa.zmiennej.systemowej} i zainicjować je podczas startu aplikacji (opcja -D).

2. Ustawienia w pliku persistence.xml można nadpisać programowo lub je dodać następująco:


Map<String, String> map = new HashMap();
// odczyt właściwości z pliku
String myUser = ...;
String myPassword = ...;
// itd.
map.put("javax.persistence.jdbc.user", myUser);
map.put("javax.persistence.jdbc.password", myPassword);

EntityManagerFactory emf = Persistence.createEntityManagerFactory(PU_NAME, map);
EntityManager em = emf.createEntityManager();
...



  • Odpowiedział
  • @ | 22.07.2015
  • TRENER MODERATOR ALTKOM AKADEMII
Komentarze
Super. Bardzo dziękuję.
Skomentował : @ Sławomir_Głowacki ,22.07.2015
  • 2
  • 1
  • 1