Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 冬眠5+;HikariCP+;MySQL_Java_Mysql_Hibernate_Hikaricp_Hibernate 5.x - Fatal编程技术网

Java 冬眠5+;HikariCP+;MySQL

Java 冬眠5+;HikariCP+;MySQL,java,mysql,hibernate,hikaricp,hibernate-5.x,Java,Mysql,Hibernate,Hikaricp,Hibernate 5.x,我已经启动了一个使用Hibernate5和MySQL数据库的项目。在此项目之前,我一直在使用Hibernate4、PostgreSQL和C3P0连接池 现在,我想使用HikariCP,因为它看起来非常有前途,与Hibernate 5一起使用 这是我的hibernate常春藤配置部分: <?xml version="1.0"?> <!DOCTYPE ivy-module [ <!ENTITY vaadin.version "7.5.5"

我已经启动了一个使用Hibernate5和MySQL数据库的项目。在此项目之前,我一直在使用Hibernate4、PostgreSQL和C3P0连接池

现在,我想使用HikariCP,因为它看起来非常有前途,与Hibernate 5一起使用

这是我的hibernate常春藤配置部分:

     <?xml version="1.0"?>
     <!DOCTYPE ivy-module [
         <!ENTITY vaadin.version "7.5.5">
         <!ENTITY highcharts.version "1.1">
         <!ENTITY vaadin.charts.version "3.0.0-alpha5">

         <!ENTITY hibernate.version "5.0.1.Final">
         <!ENTITY mysql.version "5.1.36">
         <!ENTITY log4j.version "2.3">
         <!ENTITY apache.poi.version "3.12">
         <!ENTITY apache.commons.io.version "2.4">

     ]>     
     ...          
    <!-- Hibernate -->
    <dependency org="org.hibernate" name="hibernate-core" rev="&hibernate.version;" /><!-- core -->
    <dependency org="org.hibernate" name="hibernate-java8" rev="&hibernate.version;" /><!-- java 8 support -->
    <!-- Connection Pool: -->
        <dependency org="org.hibernate" name="hibernate-hikaricp" rev="&hibernate.version;" /><!-- hikariCP -->
Hikari似乎配置得很好,但MySQL Workbench的“管理客户端连接”窗口上会一次又一次出现新的连接,即使应用程序已停止

我的问题是:

1) Hibernate和Hikari配置好了吗?
2) 有什么线索可以管理这些联系吗


感谢您的帮助

如果应用程序在新连接出现时停止,它不能来自Hikari,是吗?这很奇怪@JB Nizet。。。不可能,但会显示与相关应用程序关联的新连接。可能是HikariCP正在尝试回收“断开的连接”。没有更多信息很难说准确。如果应用程序在新连接出现时停止,它就不能来自Hikari,是吗?这很奇怪@JB Nizet。。。不可能,但会显示与相关应用程序关联的新连接。可能是HikariCP正在尝试回收“断开的连接”。如果没有更多的信息,很难说清楚。
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);

    }

    ...