Следует ли использовать синхронизацию при одновременном создании нескольких подключений к базе данных и запросов с использованием java? - PullRequest
0 голосов
/ 06 февраля 2020

Следует ли использовать синхронизацию при одновременном создании нескольких подключений к базе данных и запросов с использованием java?

Например, я реализовал следующий метод:

public static void createAccount() throws IOException, SQLException {
    DbManager.createDatabaseConnection();
    DbManager.executeSqlUpdateStatement(Account_Creation_Scripts.createAccount_Sql_Command());
    DbManager.closeDatabaseConnection();
}

Вышеуказанный метод выполняет свою работу для подключения к базе данных и создания нескольких учетных записей.

Я планирую использовать этот метод в нескольких тестах автоматизации (одновременно), которые будут одновременно запускать этот метод для целевой базы данных.

Полезно ли применять ключевое слово синхронизации для следующих методов: createAccount, createDatabaseConnection, executeSqlUpdateStatement и closeDatabaseConnection?

Спасибо

1 Ответ

1 голос
/ 06 февраля 2020

Согласно вашему коду «DbManager» должен иметь внутреннее подключение к базе данных. Поскольку существует несколько вызовов DbManager, чтобы гарантировать, что один и тот же объект Connection используется во всех вызовах, необходимо выполнить синхронизацию.

Однако это не лучший подход. Когда вы синхронизируете этот метод, только один поток может выполняться в данный момент. Остальным потокам придется ждать, что не оптимально.

Наилучший подход - использовать пул соединений. 1. Получите соединение из пула 2. Выполните ваши SQL-запросы 3. Закройте соединение (это вернет соединение обратно в пул)

При таком подходе несколько потоков смогут выполняться одновременно.

пожалуйста, проверьте { ссылка }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...