Disons que j'ai le persistence.xml suivant avec l'URL de connexion, l'utilisateur & mot de passe tous codés en dur.Définition dynamique des propriétés de persistance JPA
Ce qui suit est pour Hibernate 3.2. Pour Hibernate 3.5 ++, nous devons remplacer "hibernate.connection" par "javax.persistence". Mais permettez-moi de poser cette question indépendamment des littéraux "hibernate.connection" ou "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>
Cependant, nous devons définir l'URL, l'utilisateur & mot de passe dynamique. Il existe un serveur d'authentification proposé qui sert l'url, l'utilisateur & mot de passe. De sorte que nous n'avons pas besoin de configurer individuellement les myriades de webapps qui utilisent une forme de jdbc, hibernate ou JPA. Outre le problème de sécurité de ne pas vouloir stocker/gérer les mots de passe sur les fichiers texte visibles.
En ce qui concerne JPA, comment puis-je définir dynamiquement ces propriétés JPA? Je cherche deux séries de réponses:
une solution qui est fournisseur JPA indépendante (TopLink, EclipseLink, mise en veille prolongée, etc.) - Y at-il des fonctionnalités de JPA qui me permettent de définir ces trois propriétés dynamiquement? Si je suis autorisé à dépendre totalement d'Hibernate, en plus de l'avenue JPA, y a-t-il un moyen d'y parvenir sans impliquer Spring framework (qui ressemble à une énorme monstruosité avec des tentacules partout)?
Je serais fou de joie si vous souhaitez également jeter dans deux cents/quids/roupies sur JNDI et comment je pourrais l'utiliser pour remplacer la fonctionnalité des propriétés persistence.xml. Cependant, ce n'est pas la priorité de la question.
La plupart des choses que vous voulez accomplir peuvent être facilement réalisées avec Spring. J'utilise Spring depuis quelques semaines et je ne regrette pas du tout l'interrupteur. Le printemps semble être une grosse charge de travail, mais c'est en fait assez facile. – siebz0r