Мы динамически модифицируем наши операторы SQL, чтобы команда, которая их выполняла, была в комментарии в начале запроса. Это работает, потому что мы занимаемся собственным управлением транзакциями и имеем строгую основу. Но базовый код прост (в Java ... не знаю, как с этим справятся другие языки):
String sql = "SELECT * FROM USERS WHERE ID = ?";
Connection con = getConnection();
PreparedStatement ps = con.prepareStatement(getComment() + sql);
// etc
String getComment() {
return " /* " + getCommandName() + " */ ";
}
Драйвер JDBC пропускает комментарий без изменений и обнаруживается в базе данных, когда администраторы баз данных изучают запросы. Для этой цели наша архитектура команд поддерживает локальный поток имен команд. Кроме того, наша фабрика соединений обертывает соединение JDBC с нашим собственным объектом соединения, так что этот код присутствует, даже если люди программируют против экземпляра соединения без обработки, вместо использования методов дружественного помощника, которые мы обычно используем.