Załóżmy, że mam następujący plik persistence.xml z adresem URL połączenia, użytkownik & wszystkie hasła są zakodowane na stałe.Dynamiczne ustawianie właściwości trwałości JPA
Poniższy przykład dotyczy Hibernate 3.2. W przypadku Hibernate 3.5 ++ musimy zmienić "hibernate.connection" na "javax.persistence". Ale pozwól mi zadać to pytanie niezależnie od literałów "hibernate.connection" lub "javax.persistence".
<persistence-unit name="obamacare" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="hibernate.archive.autodetection" value="class, hbm"/>
<property name="hibernate.connection.driver_class" value="oracle.jdbc.driver.OracleDriver"/>
<property name="hibernate.connection.url" value="blah blah blah"/>
<property name="hibernate.connection.username" value="careuser"/>
<property name="hibernate.connection.password" value="carepass"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect"/>
<property name="hibernate.show_sql" value="true"/>
</properties>
</persistence-unit>
</persistence>
Jednak musimy ustawić URL, hasło użytkownika & dynamicznie. Istnieje proponowany serwer uwierzytelniania, który obsługuje hasło użytkownika, użytkownika &. Abyśmy nie musieli indywidualnie konfigurować miriadów aplikacji internetowych, które używają jakiejś formy jdbc, hibernacji lub JPA. Poza kwestią bezpieczeństwa nie chcąc przechowywać/zarządzać hasłami w widocznych plikach tekstowych.
Jeśli chodzi o JPA, w jaki sposób mogę dynamicznie ustawić te właściwości JPA? Szukam dwóch zestawów odpowiada:
rozwiązania, który jest niezależny sprzedawca JPA (TopLink, EclipseLink, hibernacja, etc) - Czy jest jakaś funkcjonalność JPA, że pozwolił mi ustawić te trzy właściwości dynamicznie?
Jeśli mogę całkowicie polegać na Hibernate, poza możliwą samą aleją JPA, czy istnieje sposób na osiągnięcie tego bez angażowania Spring framework (co wydaje się ogromnym monstrum z mackami w każdym miejscu)?
Byłbym zachwycony, jeśli również chcesz rzucać się w dwóch centów/quids/rupii na JNDI i jak mogę go użyć do zastąpienia funkcjonalności właściwości persistence.xml. Jednak nie jest to priorytetowe pytanie.
Większość rzeczy, które chcesz wykonać, można łatwo zrobić przy użyciu Spring. Używam Springa przez kilka tygodni i wcale nie żałuję zmiany. Wiosna wydaje się dużym obciążeniem, ale w rzeczywistości jest całkiem łatwa. – siebz0r