public class HibernateSession {
private static final SessionFactory sessionFactory = buildSessionFactory();
private static StandardServiceRegistry serviceRegistry;
private static SessionFactory buildSessionFactory() {
try {
Configuration configuration = new Configuration();
configuration.configure("hibernate.cfg.xml");
StandardServiceRegistryBuilder serviceRegistryBuilder = new StandardServiceRegistryBuilder();
serviceRegistry = serviceRegistryBuilder.build();
SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
return sessionFactory;
} catch (Throwable ex) {
System.err.println("Initial SessionFactory creation failed!" + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}StandardServiceRegistryBuilder不工作
我使用Hibernate 4.3。我收到一條錯誤消息「當'hibernate.dialect'未設置時,對DialectResolutionInfo的訪問不能爲空。 StandardServiceRegistryBuilder有問題。由於ServiceRegistryBuilder已被棄用,因此是首選。請爲我提供解決此問題的方法。
我的hibernate.cfg.xml文件看起來是這樣的 -
<?xml version="1.0" encoding="UTF-8"?>
<!-- Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/company_db</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!-- Drop and re-create the database schema on startup -->
<!-- <property name="hbm2ddl.auto">create</property> -->
<mapping resource="com/twopiradian/Employee.hbm.xml" />
</session-factory>
我已經解決了這個問題。除了applysettings添加一個「休眠」的事實之外,configure和applysettings的方法大部分是相同的。在數據庫設置中的每個屬性前添加前綴。在xml中手動添加前綴也可以解決問題。 – Suva