persistence.xml pour importer la base de données des valeurs de paramètres .fichier de propriétés
Edit: pas en double, mais presque
Je voudrais avoir mon app persistence.xml pour être quelque chose comme
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0">
<persistence-unit name="appName" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.dialect" value="${db.dialect'}"/>
<property name="javax.persistence.jdbc.driver" value="${db.driver}"/>
<property name="javax.persistence.jdbc.user" value="${db.user}"/>
<property name="javax.persistence.jdbc.password" value="${db.password}"/>
<property name="javax.persistence.jdbc.url" value="${db.url}"/>
</properties>
</persistence-unit>
</persistence>
l'obtention de ces valeurs d'espace réservé à partir d'un simple fichier texte quelque part dans mes dossiers source.
J'ai lu qu'il est possible lors de l'utilisation de Printemps faire comme
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>classpath:com/foo/jdbc.properties</value>
</property>
</bean>
mais ici nous ne sommes pas à l'aide du Printemps, juste en veille prolongée et certains Primefaces.
Est-il possible?
Merci!
Edit: je n'ai pas parler de certaines choses, mais pour la référence, je suis aussi à l'aide de Shiro de Sécurité et de Fourmi pour faire des trucs. Je vais poster la solution comme une réponse. Cela rend mon projet ont 3 types de fichiers avec les paramètres de base de données:
- persistence.xml (Hibernate)
- context.xml (Shiro)
- base de données.propriétés (pour la voie de migration des tâches Ant)
OriginalL'auteur paulochf | 2013-10-03
Vous devez vous connecter pour publier un commentaire.
Au lieu de définir les propriétés à l'intérieur de
persistence.xml
vous pouvez définir un standard de fichier de propriétés (clé=valeur) et de passer unProperties
objet de lacreateEntityManagerFactory()
méthode, par exemple:juste un rappel. Dans les propriétés du fichier, n'oubliez pas d'utiliser la totalité de la propriété de nom, par exemple "javax.la persistance.jdbc.utilisateur", au lieu de simplement "utilisateur"
Pourquoi, oh pourquoi n'ai-je pas trouvé ce avant
OriginalL'auteur David Levesque
Si vous utilisez Maven comme le système de build, vous pouvez utiliser Maven filtres à remplacer les valeurs lors de la construction.
Ou vous pouvez écrire une simple propriété de l'espace réservé de remplacement (qui est utilisé en interne par le printemps lui-même)
Référence: https://stackoverflow.com/a/14724719/477435
J'étais en fait référence à l'utilisation d'une classe Java qui peut remplacer la valeur de l'espace réservé par la lecture à partir du fichier de propriétés. Mais il ci-dessous la réponse proposée est beaucoup mieux où vous pouvez éliminer l'utilisation de persistence.xml et il suffit d'utiliser un fichier de propriétés.
OriginalL'auteur Gireesh
J'ai édité mentionner que je suis en utilisant Shiro de Sécurité, qui ont également besoin de quelques paramètres de base de données. Je l'ai fait juste besoin d'1 paramètres de base de données de localisation de faire ces rester dans context.xml et le référencement dans les autres.
1) Ant lire context.xml
Context.xml ayant
fait à l'aide d'Fourmi build.xml
et ensuite l'accès à l'aide
2) persistence.xml lire context.xml
Il est possible d'utiliser le contexte de la banque de données à l'aide de cette
Donc, j'ai tué 3 paramètres de base de données à tout juste 1.
Merci pour l'aide!
OriginalL'auteur paulochf