如何设置 Hibernate 配置属性以使用 Fabric 驱动程序连接到 Mysql

How to set Hibernate Configuration properties to connect to Mysql using Fabric driver

我正在尝试让一些旧代码工作,即在 Mysql 数据库中为休眠配置创建一些表,但代码引用了我不再拥有的数据源配置,我只想运行 它是独立的 Java(不在 Tomcat 容器内)所以我对 Hibernate 配置做了一些更改。

我的 pom 现在包括

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

我的密码是

  public static  Configuration setupDatabase()
{
    Configuration cfg = new Configuration()
            .setProperty(Environment.URL,"jdbc:mysql:songkong")
            .setProperty(Environment.DRIVER,"com.mysql.fabric.jdbc.FabricMySQLDriver")
            .setProperty(Environment.DIALECT, "org.hibernate.dialect.MySQL5Dialect")
            .setProperty("hibernate.show_sql", "true")
            .setProperty("hibernate.connection.username","dbuser")
            .setProperty("hibernate.connection.username", "dbpassword");;
    addEntitiesToConfig(cfg);
    cfg.setProperty(Environment.HBM2DDL_AUTO, "create-drop");
    return cfg;
}

public static void main(String[] args)
{
    Configuration cfg = setupDatabase();
    new SchemaExport(cfg).create(false,true);
}

目前的问题是找不到驱动程序。

java.sql.SQLException: No suitable driver found for jdbc:mysql:songkong
        at java.sql.DriverManager.getConnection(DriverManager.java:602)
        at java.sql.DriverManager.getConnection(DriverManager.java:154)
        at org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.getConnection(DriverManagerConnectionProviderImpl.java:173)
        at org.hibernate.tool.hbm2ddl.ManagedProviderConnectionHelper.prepare(ManagedProviderConnectionHelper.java:55)
        at org.hibernate.tool.hbm2ddl.DatabaseExporter.<init>(DatabaseExporter.java:52)
        at org.hibernate.tool.hbm2ddl.SchemaExport.execute(SchemaExport.java:368)
        at org.hibernate.tool.hbm2ddl.SchemaExport.create(SchemaExport.java:305)
        at org.hibernate.tool.hbm2ddl.SchemaExport.create(SchemaExport.java:294)
        at com.jthink.songkong.appserverdb.util.Db.main(Db.java:143)

Fabric 驱动程序在 jar 中,但我不确定我是否应该使用这个驱动程序,以及 Environment.DRIVER 行是否设置正确以引用它。我不认为我以前(几年前)使用过这个驱动程序,但它是我在 Maven Central 中唯一能找到的驱动程序。

(我的数据库叫做 songkong,我可以从命令行正确地纠正它,我没有在代码摘录中显示真实的用户名和密码)

刚刚注意到 non-fabric 驱动程序也在 jar 中,为此设置 ENVIRONMENT.DRIVER 并对 Environment.URL 进行一些修改修复了它。

 Configuration cfg = new Configuration()
                .setProperty(Environment.URL,"jdbc:mysql://localhost/songkong")
                .setProperty(Environment.DRIVER,"com.mysql.jdbc.Driver")
                .setProperty(Environment.DIALECT, "org.hibernate.dialect.MySQL5Dialect")
                .setProperty("hibernate.show_sql", "true")
                .setProperty("hibernate.connection.username","dbuser")
                .setProperty("hibernate.connection.password", "dbpassword");;