2015-03-27 4 views
1

У меня есть база данных с несколькими зарегистрированными пользователями, которые используют базу данных через java-приложение, используя jdbc. Я читал в другом месте, что соединения должны быть открыты и закрыты в кратчайшие возможные моменты времени, большую часть времени в том же блоке try, что и в статусе или запросе, который вы выполняете. Это, однако, подразумевает, что я должен хранить пользователя и пароль в памяти программы и использовать его повторно для создания новых соединений; но разве нет проблем с безопасностью при хранении пароля в памяти программы? Как сделать новые подключения к базе данных?Каков правильный способ подключения к серверу mysql в приложении jdbc?

+0

Используйте пул соединений с базой данных. Эта часть программного обеспечения инициализирует соединения и закрывает их для вас. –

ответ

0

Я предполагаю, что ваш вопрос НЕ о том, как закодировать соединение с БД.

Это действительно зависит от того, зарегистрированы ли ваши пользователи в базе данных, или у вас есть только один идентификатор (не человек) для подключения к программе и обслуживающий всех пользователей. Если первое, вы можете как-то попросить пользователя ввести пароль один раз, сохранить его в переменной, использовать переменную для подключения, отключить после использования, повторно подключиться/отключиться, если необходимо. Пароль только «хранится» в памяти «на лету» и больше не существует после завершения вашей программы, поэтому он безопасен.

Если это позже, то вам лучше запустить вашу программу на сервере веб-сервлетов и, как сказал Луиджи, использовать пул соединений. В этом случае пароль подключения будет закодирован в каком-либо файле конфигурации и доступен только администратору сервера. Если у вас нет такого сервера, вам нужно вернуться к решению в вышеприведенном абзаце и зарегистрировать всех своих пользователей в БД, каждый с собственным идентификатором и паролем.

Надеюсь, это поможет.

0

Я читал в другом месте, что соединения должны быть открыты и закрыты в кратчайшее возможное время

Сделка должна быть сделана в кратчайшие сроки. Постоянное открытие и закрытие соединений приведет к множеству (сетевых) накладных расходов.
Но если вы используете пул соединений, открытие и закрытие соединений приводит только к выводу соединения из пула и освобождению соединения обратно в пул. В этом случае открытие и закрытие соединения должно выполняться как можно быстрее, чтобы другие процессы/потоки могли повторно использовать соединение. Пул соединений сам управляет фактическим открытием и закрытием (сетевых) соединений для вас, а также другими полезными функциями, такими как обеспечение закрытия результатов, закрытие подготовленных отчетов, поддержание соединений и т. Д.
Использование пула соединений полезно используются ли подключения к базе данных с сервера-клиента или приложения. Я объяснил это в previous answer.

Смежные вопросы