Java 我在spring/hibernate中使用什么mysql驱动程序?

Java 我在spring/hibernate中使用什么mysql驱动程序?,java,mysql,hibernate,spring,Java,Mysql,Hibernate,Spring,有点困惑,“drivercassname”和“hibernate.dial”都是指mysql驱动程序吗 我应该用什么?接头J是我应该使用的吗 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="org.hsqldb.jdbcDriver"/>

有点困惑,“drivercassname”和“hibernate.dial”都是指mysql驱动程序吗

我应该用什么?接头J是我应该使用的吗

<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

drivercassname
应该是指您想要加载的JDBC驱动程序的类名(就像您通常在“普通”JDBC中使用
class 35; forName()
所做的那样)。您当前指定的一个适用于MySQL JDBC驱动程序(更新:您快速将其编辑为HSQLDB JDBC驱动程序,这仅适用于高超音速数据库,而不适用于MySQL数据库)

hibernate.dialogue
应该指的是您希望用于特定数据库的实现的类名,这样hibernate就知道有问题的数据库理解什么,从而可以自动生成合适的SQL语句。您当前指定的是适用于MySQL数据库的



也就是说,听起来你好像有问题。可能您还没有安装MySQL JDBC驱动程序?您是否收到
ClassNotFoundException
?只需下载、提取zip并将JAR文件放在运行时类路径中就足够了。

关于maven mysql定义,这里有一个似乎有效的定义

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.12</version>
</dependency>

mysql
mysql连接器java
5.1.12
有点困惑,“drivercassname”和“hibernate.dial”都是指mysql驱动程序吗

不,他们不是。
drivercassname
是指驱动程序类名,它是来自实现
java.sql.driver
的给定JDBC驱动程序的类。驱动程序类名是特定于驱动程序的

当使用MySQL的JDBC驱动程序(也称为MySQL连接器/J)时,此类为
com.MySQL.JDBC.driver
,如MySQL连接器/J文档中所述:

实现的类的名称 MySQL连接器中的java.sql.Driver 是
com.mysql.jdbc.Driver
。(……)

实际上,他们甚至提供了使用Spring驱动程序的指令。见本节

hibernate.dialogue
不同,此配置属性用于定义hibernate
org.hibernate.dialogue.dialogue
的类名,它允许hibernate生成针对特定关系数据库优化的SQL。Hibernate文档中也解释了这一点:

(…)Hibernate的类名
org.hibernate.dialogue.dialogue
允许Hibernate生成SQL 针对特定关系优化 数据库

例如
方言的全名

在大多数情况下,休眠实际上是 能够选择正确的
org.hibernate.dialogue.dialogue
基于JDBC的实现 JDBC驱动程序返回的元数据

对于MySQL 5.x,如果您使用的是InnoDB表(这是我的建议),则应该使用
org.hibernate.dialent.mysql5innodbdialent
,如果您不使用,则应该使用
org.hibernate.dialent.mysql5dialent
。有关(非详尽的)列表,请参见本节

最后一点,你在问题中没有提到的专业部分。。。MySQL JDBC驱动程序在Maven中央存储库中可用,您应该使用(as)。例如,以下查询:

允许在两次单击中找到最终版本的maven坐标:

<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>5.1.13</version>
</dependency>

mysql
mysql连接器java
5.1.13

PS:我不是故意粗鲁,我很乐意帮助你,但你应该真正尝试利用你正在使用的产品或框架的文档。你在这个问题上提出的问题有很好的记录(如我所示),并且很容易找到。在我看来,学会自己查找基本信息是软件开发人员的一项基本技能。

所以我有org.hsqldb.jdbcDriver,应该是com.mysql.jdbc.Driver?我在maven中找不到mysql.jdbc,有什么提示吗?如果您使用的是Hypersonic DB,那么应该将其jdbc驱动程序放在类路径中,更改
drivercassname
以反映HSQLDB JDBC驱动程序类名,这样conneciton池就知道应该加载哪个JDBC驱动程序,而
hibernate.dialogue
以反映HSQLDB方言,这样hibernate就知道它在与哪个DB对话。不过,我很想删除这个答案,因为OP似乎不喜欢我的努力,甚至新学到的东西(!)在任何方面。是我还是你最初在
drivercassname
中有
com.mysql.jdbc.Driver
,并且你是否在5分钟内快速编辑了它?这让我的答案看起来有点愚蠢…是的,我确实改变了它,我有hsqldb,正在尝试mysql,但不确定我是否走上了正确的轨道…说真的,我不理解被接受的答案,它只是没有回答你问题的主体。如果你要找的是一些maven坐标,那么就把它写下来,并适当地标记你的问题。首先,它可以让@BalusC或我这样的读者不必浪费时间回答你不关心的问题。第二,在目前的状态下,这个问题/答案没有什么意义,你目前所做的是一个糟糕的实践。当然,你有一个问题的答案,你甚至没有表达出来。但与此相对应的是,你正在做的是如此不相关。这不好。
<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>5.1.13</version>
</dependency>