hibernate pom mysql_Hibernate之Mysql或Mariadb数据库连接问题

本文介绍了在使用Hibernate时遇到的Mysql或Mariadb数据库连接问题,包括数据库驱动配置、Hibernate版本选择、hibernate.cfg.xml配置、SessionFactory检查及数据库授权步骤。错误提示包括连接拒绝和方言解析信息为空。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hibernate之Mysql或Mariadb数据库连接问题

项目是用Maven做的build,配置主要需要注意一下几个地方:

1. 数据库Mysql或Mariadb

yum repository:

http://mirrors.neusoft.edu.cn/mariadb/mariadb-10.0.16/

Mariadb:

https://mariadb.com/kb/en/mariadb/

org.mariadb.jdbc

mariadb-java-client

1.1.8

compile

mysql

mysql-connector-java

5.1.9

2.Hibernate 版本 4.3.8.Final

org.hibernate

hibernate-core

4.3.8.Final

compile

3. src\main\resources\hibernate.cfg.xml

/p>

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

org.mariadb.jdbc.Driver

false

passw0rd

jdbc:mariadb://9.114.194.77:3306/cody

root

org.hibernate.dialect.MySQLDialect

true

true

false

错误:Error calling Driver#connect,connect refused...

xxx is not allowed to connect to this MariaDB server

类似这样的错。

需要注意以下几个地方:

1.hibernate.cfg.xml的配置

org.mariadb.jdbc.Driver

jdbc:mariadb://9.114.194.77:3306/cody

2. 检查SessionFactory 是不是正常

参考官方文档:

http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html/ch01.html#tutorial-firstapp-firstclass

public class HibernateListener implements ServletContextListener{

private Configuration config;

private SessionFactory factory;

private String path = "/hibernate.cfg.xml";

private static Class clazz = HibernateListener.class;

public static final String KEY_NAME = clazz.getName();

public void contextDestroyed(ServletContextEvent event) {

//

}

public void contextInitialized(ServletContextEvent event) {

try {

URL url = HibernateListener.class.getResource(path);

config = new Configuration().configure(url);

System.out.println("Hibernate Configuration loaded");

ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(config.getProperties()).build();

System.out.println("Hibernate serviceRegistry created");

factory = config.buildSessionFactory(serviceRegistry);

System.out.println("Session Factory:" + factory.toString());

//save the Hibernate session factory into serlvet context

event.getServletContext().setAttribute(KEY_NAME, factory);

} catch (Exception e) {

System.out.println(e.getMessage());

e.printStackTrace();

}

}

}

3. 数据库的授权:

通常这种修改都是web server 和 db在两个机器上,所以有个访问权限的问题。

通常访问的时候会以 root@的形式,这就需要授权和添加相关的用户密码才能访问db。

可以参考这篇文章:

http://www.cnblogs.com/xyzdw/archive/2011/08/11/2135227.html

一、在安装mysql/MariaDB的机器上运行:

1、mysql -h localhost -u root -p //这样应该可以进入MySQL/MariaDB服务器

2、mysql>GRANT   ALL   PRIVILEGES   ON   *.*   TO   'root'@'%'   WITH   GRANT   OPTION //赋予任何主机访问数据的权限

3、mysql>FLUSH   PRIVILEGES //修改生效

4、mysql>EXIT //退出DB

二、配置mysql数据库的user 表的‘%’用户信息:

MariaDB [mysql]> UPDATE user SET Password=PASSWORD('newpwd') WHERE User='root';MariaDB [mysql]>FLUSH PRIVILEGES;MariaDB [mysql]>exit;

错误:

hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set

参考文档:

http://www.tuicool.com/articles/7FZrYzE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值