我正在尝试使用Hibernate连接到servlet中的数据库。我已经读过我们可以使用hibernate.cfg.xml或hibernate.properties文件来配置session.For我使用xml。现在,当我尝试使用属性而不是xml时,它无法正常工作。 这是说 hibernate.cfg.xml 找不到。但我没有提到使用xml文件,事实上我删除了那个xml文件。
请帮帮我。 如果我做错了,请纠正我。
答案 0 :(得分:9)
此代码默认调用hibernate.cfg.xml:
Configuration configuration = new Configuration().configure();
默认情况下,此代码将调用hibernate.properties:
Configuration configuration = new Configuration();
希望它有所帮助。
答案 1 :(得分:8)
根据我对hibernate的理解,最好的办法是在hibernate.cfg.xml
文件中定义映射,并在hibernate.properties
中定义其他配置。
另一种配置方法是在名为hibernate.cfg.xml
的文件中指定完整配置。此文件可用作hibernate.properties
文件的替代文件,如果两者都存在,则可用于覆盖属性。
一旦你必须调整Hibernate缓存,hibernate.cfg.xml
也会更方便。您可以选择使用hibernate.properties或hibernate.cfg.xml
。两者都是等价的。
您可以在以下链接中阅读有关此内容的更多信息:
http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html
答案 2 :(得分:2)
如果使用的是.configure()
,请删除hibernate.properties
。下面的代码是
HibernateUtil
会话工厂实施。
private static SessionFactory buildSessionFactory() {
try {
Configuration configuration = new Configuration();
ServiceRegistry serviceRegistry
= new StandardServiceRegistryBuilder()
.applySettings(configuration.getProperties()).build();
configuration.addAnnotatedClass(LookUpModel.class);
return configuration
.buildSessionFactory(serviceRegistry);
}catch(Exception e) {
e.printStackTrace();
throw new RuntimeException("There is issue in hibernate util");
}
}
hibernate.properites文件
hibernate.connection.driver_class = com.mysql.jdbc.Driver
hibernate.connection.url = jdbc:mysql://localhost:3306/test
hibernate.connection.username = root
hibernate.connection.password = passsword
hibernate.c3p0.min_size=5
hibernate.c3p0.max_size=20
hibernate.c3p0.timeout=1800
hibernate.c3p0.max_statements=50
hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
答案 3 :(得分:1)
如果您使用 servlet 中的数据库,那么您应该在服务器中定义 DataSource 并指向一个hibernate属性通过你现在可能正在使用的所有其他hibernate属性来定义所有内容。
这样做的好处是允许您独立于应用程序定义连接池和其他连接相关参数。
例如,您的生产环境可能具有与测试和开发环境不同的数据库密码。