Hibernate 5 + HikariCP + MySQL
我使用Hibernate 5和MySQL数据库开始了一个项目。 在这个项目之前,我一直在使用Hibernate 4,PostgreSQL和C3P0连接池。
现在,我想用Hibernate 5来使用HikariCP,因为它看起来很有前途。
这是我的hibernate的IVY配置部分:
<!DOCTYPE ivy-module [ ]> ...
我的DAO看起来像这样:
public class PtDao { private Logger logger = LoggerFactory.getLogger(PtDao.class); private static PtDao instance; private Configuration cfg; private static ServiceRegistry serviceRegistry; private SessionFactory factory; private Transaction tx; private static Session session; private PtDao(){ prepararConexionConHikariCP(); } private void prepararConexionConHikariCP(){ try{ cfg = new Configuration(); cfg.setProperty("hibernate.hbm2ddl.auto", "update"); cfg.setProperty("hibernate.transaction.auto_close_session", "true"); cfg.setProperty("hibernate.connection.autocommit", "false"); cfg.setProperty("hibernate.connection.provider_class", "com.zaxxer.hikari.hibernate.HikariConnectionProvider"); cfg.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect"); cfg.setProperty("hibernate.hikari.dataSourceClassName", "com.mysql.jdbc.jdbc2.optional.MysqlDataSource"); // MySQL Servidor Linux cfg.setProperty("hibernate.hikari.dataSource.url", "jdbc:mysql://192.168.1.101:3306/averiassae"); cfg.setProperty("hibernate.hikari.dataSource.user", "root"); cfg.setProperty("hibernate.hikari.dataSource.password", "XXXXX"); cfg.setProperty("hibernate.hikari.dataSource.cachePrepStmts", "true"); cfg.setProperty("hibernate.hikari.dataSource.prepStmtCacheSize", "250"); cfg.setProperty("hibernate.hikari.dataSource.prepStmtCacheSqlLimit", "2048"); //cfg.setProperty("hibernate.hikari.idleTimeout", "300000"); //cfg.setProperty("hibernate.hikari.minimumIdle", "10"); //cfg.setProperty("hibernate.hikari.maximumPoolSize", "20"); cfg.setProperty("hibernate.show_sql", "true"); cfg.setProperty("hibernate.format_sql", "true"); cfg.setProperty("hibernate.generate_statistics", "true"); anyadirPersistencia(); StandardServiceRegistryBuilder serviceRegistryBuilder = new StandardServiceRegistryBuilder(); serviceRegistryBuilder.applySettings(cfg.getProperties()); serviceRegistry = serviceRegistryBuilder.build(); factory = cfg.buildSessionFactory(serviceRegistry); this.openSession(); } catch (HibernateException e) { logger.error("Error HibernateException (" + e.getClass() + ") en PtDao(): " + e.getMessage() + ". Causa: " + e.getCause()); e.printStackTrace(); } } private void anyadirPersistencia() { cfg.addAnnotatedClass(Operador.class); cfg.addAnnotatedClass(Averia.class); } ...
看起来Hikari配置得很好,但是一旦有了新的连接出现在MySQL Workbench的Administration-Client连接窗口中,即使应用程序已经停止……
我的问题是:
1)Hibernate和Hikari是否配置良好?
2)管理这些连接的任何线索?
谢谢你的帮助
- Hibernate包vs idbag
- Hibernate,liquibase和hsqldb的Id生成问题
- org.hibernate.LazyInitializationException:无法初始化代理 – 没有会话
- 项目中hibernate.cfg.xml的位置?
- 为什么hibernate给出了ConstraintException,就好像在已经存在的情况下尝试创建对象一样
- Spring @Transaction没有启动事务
- 错误:传递给持久化的分离实体 – 尝试持久化复杂数据(Play-Framework)
- hibernate关系映射/加速批量插入
- Spring Data JPA(Hibernate):如何仅使用其抽象超类中的字段来检索具体实体?