当前位置: 首页 > 知识库问答 >
问题:

Hibernate无法使用HikariCP池创建会话工厂

华煜祺
2023-03-14

我尝试使用HikariCP池连接,但我无法启动应用程序,因为我一直在创建sesion中获取空对象。

这是我的配置:

系统

  • Hibernate4.3.6。最终
  • MariaDB v10.0(x64)

HibernateUtil类

public class HibernateUtil {
private static SessionFactory sessionFactory;

private static SessionFactory buildSessionFactory() {
    try {
        Configuration configuration = new Configuration();
        configuration.configure("hibernate.cfg.xml");
        ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
        sessionFactory = configuration.buildSessionFactory(serviceRegistry);

        return sessionFactory;
    }
    catch (HibernateException ex) {
        throw new ExceptionInInitializerError(ex);
    }
}

public static SessionFactory getSessionFactory() {
    if (sessionFactory == null) {
        sessionFactory = buildSessionFactory();
    }
    return sessionFactory;
}
}

hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!-- Datos de conexión a la BD -->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3307/******?zeroDateTimeBehavior=convertToNull</property>
        <property name="hibernate.connection.username">****</property>
        <property name="hibernate.connection.password">****</property>
        <property name="javax.persistence.validation.mode">none</property>
        <!-- Configuración de sesión -->
        <property name="connection.release_mode">after_transaction</property>
        <property name="current_session_context_class">thread</property>
        <!-- Configuración de la salida SQL y estadísticas -->
        <property name="show_sql">true</property>
        <property name="format_sql">true</property>
        <property name="hibernate.temp.use_jdbc_metadata_defaults">false</property>
        <!-- Pool de conexiones -->
        <property name="hibernate.connection.provider_class">org.mariadb.jdbc.MySQLDataSource</property>
        <!-- Enable Hibernate's current session context -->
        <property name="hibernate.cache.use_second_level_cache">false</property>
        <property name="hibernate.cache.use_query_cache">false</property>
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
    </session-factory>
</hibernate-configuration>

日志

正在准备使用过滤器构建会话工厂:{}hh000130:实例化显式连接提供程序:org.mariadb.jdbc。应用程序启动方法中的MySQLDataSource异常

共有1个答案

孟泽宇
2023-03-14

正如brettw所说,我只需要将provider类更改为

<prop key="hibernate.connection.provider_class">com.zaxxer.hikari.hibernate.HikariConnectionProvider</prop>
 类似资料:
  • 我的Hibernate查询SessionFactory sessionFactory=new Configuration(). confiure(). buildSessionFactory(); sess=sessionFactory.openSession()有问题;我在每个函数中都调用它,我如何避免它只创建一次sessionFactory

  • 问题内容: 我在Hibernate 4中生成会话工厂时遇到问题。在Hibernate 3中,我很简单地做到了: 现在,我需要将ServiceRegistry类传递给buildSessionFactory,但是Javadocs对如何执行此操作非常含糊。有小费吗? 问题答案: 是的,他们已经弃用了先前的buildSessionFactory API,并且做起来很容易..您可以执行类似的操作。 编辑 :

  • 问题内容: 我希望更改为在我的Web应用程序中实现无状态Spring Security的目的是结束,但事实并非如此。 进行了此更改后,由于(根据我的假设)Spring安全性在会话中不存储任何内容,并且无法对安全的Web请求进行身份验证,因此Spring安全性似乎无法正常工作。 我如何利用此无状态功能? 我似乎尚未找到任何有关如何为无状态Web应用程序实现无状态Spring安全的示例。 谢谢 ! 问

  • org.openqa.selenium.SessionNotCreatedException:无法创建新会话。(原始错误:命令失败:C:\Windows\system32\cmd.exe/s/C“C:\Program Files(x86)\Android\Android sdk\platform tools\adb.exe”-s 69c7aa170104安装“C:\Program Files(x8

  • 我找了很多解决办法。谢了。

  • 这是因为我在一个搜索字段上有一个失败的Behat测试-这个字段是通过javascript添加的,所以我假设Selenium(与我的设置)有问题。 我发现,如果我访问http://localhost:4444/wd/hub并单击“create Session”,选择任何浏览器(android、iphone、firefox、chrome、internet explorer、opera),我将得到错误消