Как сделать учетные данные в persistence.xml программно?

#java #jpa #spring-data-jpa #persistence #persistence.xml

Вопрос:

У меня есть persistence.xml файл, который используется для загрузки базы данных и подключений.

У меня есть имя пользователя и пароль, хранящиеся в нем вот так:

 lt;!-- MySQL --gt;  lt;property name="javax.persistence.jdbc.url"  value="jdbc:mysql://localhost:3306/mydatabase"/gt;   lt;!-- Credentials --gt;  lt;property name="javax.persistence.jdbc.user"  value="this is user"/gt;  lt;property name="javax.persistence.jdbc.password"  value="this is password"/gt;  

Теперь у меня есть требование не хранить их подобным образом в кодовой базе и я хочу получить их программно по проводу. Как я могу этого достичь ?

Ответ №1:

чтобы установить значения динамически, вы можете сделать это следующим образом:

в файле config.properties установите эти параметры, а затем получите к ним доступ

 jdbc.url=jdbc:mysql://localhost:3306/my_database jdbc.username=root jdbc.password=123  lt;property name="javax.persistence.jdbc.url" value="${jdbc.url}" /gt; lt;property name="javax.persistence.jdbc.password" value="${jdbc.properties}" /gt;  

или, если вы хотите получить их в контроллере, вы можете получить их с помощью «EntityManagerFactory».

 EntityManagerFactory emf = entityManager.getEntityManagerFactory(); Maplt;String, Objectgt; emfProperties = emf.getProperties();  String url = (String) emfProperties.get("javax.persistence.jdbc.url"); String user = (String) emfProperties.get("javax.persistence.jdbc.user"); String password = (String) emfProperties.get("javax.persistence.jdbc.password");  

Комментарии:

1. не могли бы вы уточнить ? у меня есть только jpa, а не спящий режим

2. вы можете использовать репозиторий jpa, и не могли бы вы, пожалуйста, уточнить свой вопрос and want to fetch them programatically through a wire.