配置是否必须有Hibernate.cfg.xml文件?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (21)

我不希望拥有Hibernate.cfg.xml文件。相反,我想通过代码完成所有的配置,如下所示。

private static final SessionFactory factory;
private static final Properties properties;

static
{
    properties = new Properties();
    properties.setProperty("hibernate.connection.driver_class", "com.mysql.jdbc.Driver");
    properties.setProperty("hibernate.connection.url", "jdbc:mysql://localhost:3306/books");
    properties.setProperty("hibernate.connection.username", "jhtp7");
    properties.setProperty("hibernate.connection.password", "password");
    properties.setProperty("hibernate.show_sql", "com.mysql.jdbc.Driver");
    properties.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");

    factory = new Configuration().setProperties(properties).configure().
                            buildSessionFactory();
}

我尝试过上述方法。但是我面临的问题是Hibernate抛出一个异常./hibernate.cfg.xml file missing

是否真的必须保留hibernate.cfg.xml档案?

提问于
用户回答回答于

我相信是因为你configure()调用Configuration对象。尝试删除它,Hibernate将不会查找不存在的文件。基本上,您是通过您的properties对象,因此不需要告诉Hibernate查找hibernate.cfg.xml文件,这正是configure()方法确实如此。

用户回答回答于

不,我不认为配置XML是强制性的。要解决问题,我认为您需要使用org.Hibernate.cfg.Configuration类。

基本上,你需要做这样的事情

Configuration cfg = new Configuration()
.setProperty("hibernate.dialect", "com.mysql.jdbc.Driver")
.setProperty("hibernate.connection.datasource", "jdbc:mysql://localhost:3306/books")
.setProperty("hibernate.order_updates", "true");

为了创建你的sessionFactory,你只需要说,cfg.buildSessionFactory();

扫码关注云+社区