有点疑惑,'driverclassname'和'hibernate.dialect'都是指mysql驱动吗?
我应该使用什么?我应该使用 connectorJ 吗?
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
<property name="url" value="jdbc:mysql://localhost/blah"/>
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.MySQLDialect
我正在使用 Maven,所以如果我能从 Maven 获得驱动程序,那将是理想的。
在 tomcat 中运行我的应用程序时出现错误:
Cannot create JDBC driver of class 'org.hsqldb.jdbcDriver' for connect URL
最佳答案
Little confused, is 'driverclassname' and 'hibernate.dialect' both referring to the mysql driver?
不,他们不是。 driverclassname
指的是 驱动程序类名,它是来自实现 java.sql.Driver
的给定 JDBC 驱动程序的类。驱动程序类名称是特定于驱动程序的。
当使用 MySQL 的 JDBC 驱动程序又名 MySQL Connector/J 时,这个类是 com.mysql.jdbc.Driver
,如 MySQL Connector/J 文档中所述:
20.3.4.1. Driver/Datasource Class Names, URL Syntax and Configuration Properties for Connector/J
The name of the class that implements
java.sql.Driver
in MySQL Connector/J iscom.mysql.jdbc.Driver
. (...)
实际上,他们甚至提供了在 Spring 中使用他们的驱动程序的说明。请参阅 20.3.5.2.4. Using Connector/J with Spring 部分.
hibernate.dialect
不同,此配置属性用于定义Hibernate org.hibernate.dialect.Dialect
的类名,它允许 Hibernate生成针对特定关系数据库优化的 SQL。在 Hibernate 文档中再次对此进行了解释:
3.4. Optional configuration properties
(...) The classname of a Hibernate
org.hibernate.dialect.Dialect
which allows Hibernate to generate SQL optimized for a particular relational database.e.g.
full.classname.of.Dialect
In most cases Hibernate will actually be able to choose the correct
org.hibernate.dialect.Dialect
implementation based on the JDBC metadata returned by the JDBC driver.
对于 MySQL 5.x,如果您使用 InnoDB 表(这是我的建议)或 org.hibernate.dialect.MySQL5Dialect,您应该使用
如果你不是。请参阅 3.4.1. SQL Dialects 部分一份(非详尽的) list 。org.hibernate.dialect.MySQL5InnoDBDialect
最后一点,您甚至没有在问题中提及的 Maven 部分...Maven 中央存储库中提供了 MySQL JDBC 驱动程序,您应该使用 repository search engine (如 I already suggested )。例如,以下查询:
http://www.jarvana.com/jarvana/search?search_type=project&project=mysql
允许在两次点击中找到最终版本的maven坐标:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.13</version>
</dependency>
PS:我并不是故意粗鲁,我很乐意提供帮助,但您真的应该尝试利用您正在使用的产品或框架的文档。您在这个问题中提出的问题有据可查(如我所展示的),并且很容易找到。在我看来,学会自己查找基本信息是软件开发人员的一项基本技能。
关于java - 我在 spring/hibernate 中使用什么 mysql 驱动程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3278148/