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