Есть ли альтернатива для предоставления пользователя и пароля для реактивного Hibernate без persistance.xml?
Я пытаюсь найти способ предоставить пользователя и пароль без их жесткого кодирования на одном сервере. Мне нужно получить их через api.
<!-- MySQL -->
<property name="javax.persistence.jdbc.url"
value="jdbc:mysql://localhost:3306/mydatabase"/>
<!-- Credentials -->
<property name="javax.persistence.jdbc.user"
value="this is user"/>
<property name="javax.persistence.jdbc.password"
value="this is password"/>
Выше показано, как это делается прямо сейчас, но я хочу подключить их, чтобы любой, у кого есть доступ к коду, по-прежнему не мог видеть пользователя и пароль. Как я могу этого добиться? У меня нет JPA в этом проекте.
2 ответа
Вы можете сделать это, используя этот методjavax.persistence.Persistence
:
/**
* Create and return an EntityManagerFactory for the named persistence unit
* using the given properties.
*
* @param persistenceUnitName
* the name of the persistence unit
* @param properties
* Additional properties to use when creating the factory.
* These properties may include properties to control
* schema generation. The values of these properties override
* any values that may have been configured elsewhere.
* @return the factory that creates EntityManagers configured according to
* the specified persistence unit.
*/
public static EntityManagerFactory createEntityManagerFactory(String persistenceUnitName, Map properties) {
Получите имя пользователя и пароль из вашего API и сохраните их вMap
так:
var props = new HashMap<String, String>();
fetch("javax.persistence.jdbc.url", props);
fetch("javax.persistence.jdbc.password", props);
fetch("javax.persistence.jdbc.user", props);
а затем позвоните:
emf = Persistence
.createEntityManagerFactory("hibernate-config", props)
Я не уверен точно, каковы ваши требования, но очень гибкий вариант - реализовать
RectiveConnectionPool
.