Comment utiliser MySQL déclaration préparée à l'avance la mise en cache?

Comment puis-je profiter de MySQL possibilité de mettre en cache les requêtes préparées?
L'une des raisons d'utiliser les requêtes préparées, est qu'il n'est pas nécessaire d'envoyer la déclaration préparée elle-même plusieurs fois si la même instruction préparée est d'être utilisé de nouveau.

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()

Lors de l'exécution de la au-dessus de Java exemple je vois 5 paires de Préparer et d'Exécuter des commandes dans le mysqld fichier journal. Le déplacement de la ps affectation à l'extérieur de la boucle résultats dans un seul Préparer et 5 pour Exécuter les commandes de la course. Le paramètre de connexion "cachePrepStmts=true" ne semble pas faire une différence ici.

Lors de l'exécution d'un programme similaire à l'aide de Spring et Hibernate le nombre de Préparer les commandes envoyées (1 ou 5), dépend de la cachePrepStmts paramètre de connexion est activée. Comment Hibernate exécuter les instructions préparées pour profiter de la cachePrepStmts? Est-il possible d'imiter ce à l'aide de JDBC pur?

J'ai été l'exécution de cette sur le Serveur MySQL 4.1.22 et mysql-connector-java-5.0.4.jar

OriginalL'auteur Chei | 2008-10-21