我不想拥有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
文件真的是强制性的吗?
提前致谢
答案 0 :(得分:22)
我认为这是因为configure()
对Configuration
对象的调用。尝试删除它,休眠不会查找不存在的文件。基本上你是通过properties
对象设置所有必需的属性,所以没有必要告诉Hibernate查找hibernate.cfg.xml
文件,这正是configure()
方法所做的。
答案 1 :(得分:12)
不,我不认为config xml是强制性的。为了解决您的问题,我认为您需要使用org.hibernate.cfg.Configuration类。请看一下这个链接:http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html
基本上,你需要像
这样的东西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();
答案 2 :(得分:6)
不,使用hibernate.cfg.xml并不是必须的。只是不要使用<div id="filter-bar">
<button onclick="find('shoes')">Shoes</button>
<button onclick="find('tops')">Tops</button>
<button onclick="find('skirts')">Skirts</button>
</div>
<div class="product-item shoes">
Shoes
</div>
<div class="product-item tops">
Tops
</div>
<div class="product-item skirts">
Skirts
</div>
<div class="product-item skirts">
Skirts
</div>
<div class="product-item shoes">
Shoes
</div>
<div class="product-item tops">
Tops
</div>
<div class="product-item skirts">
Skirts
</div>
<div class="product-item skirts">
Skirts
</div>
。
如果我们使用.configure()
。
.configure()
答案 3 :(得分:0)
基本上,您是通过 properties 对象设置所有必需的属性的,因此并不需要告诉Hibernate查找hibernate.cfg.xml文件,该文件正是 configure的配置。 ()方法。不必使用hibernate.cfg.xml。只是不要使用 .configure()。
static {
try {
Properties prop= new Properties();
prop.setProperty("hibernate.connection.url", "jdbc:mysql://localhost:3306/hibernate");
prop.setProperty("hibernate.connection.username", "root");
prop.setProperty("hibernate.connection.password", "");
prop.setProperty("dialect", "org.hibernate.dialect.MySQLDialect");
concreteSessionFactory = new AnnotationConfiguration()
.addPackage("com.concretepage.persistence")
.addProperties(prop)
.addAnnotatedClass(User.class)
.buildSessionFactory();
} catch (Throwable ex) {
throw new ExceptionInInitializerError(ex);
}