Есть ли альтернатива для предоставления пользователя и пароля для реактивного 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.

https://hibernate.org/reactive/documentation/1.1/reference/html_single/#_custom_connection_management_and_multitenancy

Другие вопросы по тегам