Как я могу воспользоваться возможностью MySQL кэшировать подготовленные заявления? Одна из причин использования подготовленных операторов состоит в том, что нет необходимости отправлять сам подготовленный оператор несколько раз, если снова использовать тот же подготовленный оператор.Как использовать подготовленное MySQL кэширование инструкции?
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mydb" +
"?cachePrepStmts=true", "user", "pass");
for (int i = 0; i < 5; i++) {
PreparedStatement ps = conn.prepareStatement("select * from MYTABLE where id=?");
ps.setInt(1, 1);
ps.execute();
}
conn.close()
При выполнении приведенного выше примера Java я вижу 5 пар команд «Подготовка и выполнение» в файле журнала mysqld. Перемещение назначения ps вне цикла приводит к единым командам Prepare и 5 Execute. Параметр подключения "cachePrepStmts = true" здесь не имеет никакого значения.
При запуске аналогичной программы с использованием Spring и Hibernate количество команд Prepare, отправленных (1 или 5), зависит от того, включен ли параметр подключения cachePrepStmts. Как Hibernate выполняет подготовленные инструкции, чтобы воспользоваться настройкой cachePrepStmts? Можно ли имитировать это с помощью чистого JDBC?
я бегу это на сервере MySQL 4.1.22 и MySQL-разъем-Java-5.0.4.jar