先说明一下环境:Tomcat5.5.17+MySQL5.1+Hibernate3.1的单机开发环境,驱动是Connector/J5.0.4。
遇到的现象是:
如果使用连接缓冲池,在数据库里数据更新的情况下,客户端得到的数据库记录不发生变化。如果不使用连接缓冲池,那么没有这个问题(一句话就是,同一个数据库连接对同一个SQL语句的查询产生了缓存)。
请高手研究一下,是什么原因产生的这个问题。我已经过作过很多排查,能够90%的肯定Hibernate本身和DB本身没有产生缓存,个人目前基本怀疑是JDBC Driver的缓存引起的问题,但是从Connector/J的说明文当中的相关cache*参数都设置为false也不能解决问题。相关技术文档:
Connector/J5.0.4的说明文档:mysql-connector-java-5.0.4/mysql-connector-java-5.0.4/docs/connector-j.html#connector-j-reference-type-conversions
MySQL5.1关于查询缓存的分析文档:http://dev.mysql.com/doc/refman/5.1/zh/ix01.html