Java 我在spring/hibernate中使用什么mysql驱动程序?
有点困惑,“drivercassname”和“hibernate.dial”都是指mysql驱动程序吗 我应该用什么?接头J是我应该使用的吗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"/>
<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
不同,此配置属性用于定义hibernateorg.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>