开发者社区> 问答> 正文

只用hibernate与druid的配置问题 :报错

@玛雅牛 你好,想跟你请教个问题:

只使用了hibernate4.2.2,druid1.0.9,找了半天配置,最后的错误是:org.hibernate.HibernateException: Could not instantiate connection provider:com.alibaba.druid.support.hibernate.DruidConnectionProvider

配置如下

<session-factory>
	<property name="connection.provider_class">com.alibaba.druid.support.hibernate.DruidConnectionProvider</property>
	
	<!-- 配置初始化大小、最小、最大 -->
	<property name="initialSize">1</property>
	<property name="minIdle">1</property>
	<property name="maxActive">20</property>

	<!-- 配置获取连接等待超时的时间 -->
	<property name="maxWait">60000</property>

	<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
	<property name="timeBetweenEvictionRunsMillis">60000</property>

	<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
	<property name="minEvictableIdleTimeMillis">300000</property>

	<property name="validationQuery">SELECT 'x'</property>
	<property name="testWhileIdle">true</property>
	<property name="testOnBorrow">false</property>
	<property name="testOnReturn">false</property>

	<!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->
	<property name="poolPreparedStatements">true</property>
	<property name="maxPoolPreparedStatementPerConnectionSize">20</property>

	<!-- 配置监控统计拦截的filters,去掉后监控界面sql无法统计 -->
	<property name="filters">stat</property>


	<!-- sessionFactory properties -->
	<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
	<property name="connection.url">jdbc:oracle:thin:@10.152.223.51:1521:qybi</property>
	<property name="connection.username">qybi</property>
	<property name="connection.password">qybi123</property>
	<property name="show_sql">false</property>
</session-factory>
请指导一下,谢谢!

QQ:812229694


Configuration conf = new Configuration().configure();
System.out.println(conf);
SessionFactory factory = conf.buildSessionFactory();

在标注处出错

org.hibernate.cfg.Configuration@1581593
Exception in thread "main" java.lang.NullPointerException
	at com.alibaba.druid.util.JdbcUtils.getDriverClassName(JdbcUtils.java:354)
	at com.alibaba.druid.pool.DruidDataSource.init(DruidDataSource.java:577)
	at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:915)
	at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:911)
	at com.alibaba.druid.support.hibernate.DruidConnectionProvider.getConnection(DruidConnectionProvider.java:52)
	at org.hibernate.engine.jdbc.internal.JdbcServicesImpl$ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcServicesImpl.java:242)
	at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:117)
	at org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:75)
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:159)
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:131)
	at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1797)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1755)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1840)
	at com.test.GetSession.getSen(GetSession.java:13)
	at com.test.Test.main(Test.java:49)




展开
收起
kun坤 2020-06-12 22:08:30 899 0
1 条回答
写回答
取消 提交回答
  • 请贴出完整的异常堆栈######已补异常信息######

    对此不熟,貌似xml中的属性名写错了。driverClass?

    ######回复 @ldl-1023 : 大部分时间都是用jfinal。ssh很少用了。######你用的都是spring或其他方式######

    "Druid是根据url前缀来识别DriverClass的,这样使得配置更方便简洁。"

    结合JdbcUtils的代码 https://github.com/alibaba/druid/blob/master/src/main/java/com/alibaba/druid/util/JdbcUtils.java 来看, 应该是没有读到hibernate的配置信息才导致的. 可以往这个方向排查看看.

    如果还是解决不了, 最好提供一下你的项目目录结构, 以及hibernate的配置文件相关的目录.

    ######没有 oracle-jdbc的jar包?######

    引用来自“JacarriChan”的评论

    没有 oracle-jdbc的jar包?

    如果引入了,看是不是重复了。

    如果没有重复,建议你断点到“JdbcUtils.java:354”看它在找哪个class

    ######你好,你的问题解决了没呢?我也是报这个错误,断点进去和你一样的错,发现是jdbcUrl 的值为null,怎么处理呢 ?######

    数据库连接信息要放在数据库连接池之前


    ######<property name="driverClassName">com.mysql.jdbc.Driver</property>
    <property name="url">
    jdbc:mysql://127.0.0.1:3306/lian?autoReconnect=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false
    </property>
    <property name="username">root</property>
    <property name="password">root</property>
    需要配置你的数据连接信息
    2020-06-12 22:09:14
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载