我的服务器使用 Hibernate 来连接到 MySQL 数据库。我还使用 c3p0 进行连接池。我想在创建时对每个连接执行一次特定的 sql 查询,但由于我使用ComboPooledDataSource
的是 ,因此无法检测何时创建新会话。我发现我可以通过在结帐时启用测试连接来运行我的查询,并将我想要运行的查询设置为首选测试查询(但它可以运行多次)。
String query = "my query";
comboPooledDataSource.setTestConnectionOnCheckout(true);
comboPooledDataSource.setPreferredTestQuery(query);
有没有更优雅的方法来实现这一点?
* 编辑 *
我试图让我的数据库接受 utf8mb4 字符。可接受的方法是将以下内容应用于 my.cnf 文件:
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
问题是除了我的数据库之外我无权访问任何东西,所以我的解决方案是SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;
为每个连接执行。