这是我第一次使用hibernate,我已经阅读了一两篇教程,并且很快地对这个类进行了模拟,看看我是否可以从我的数据库中得到一些东西:
import java.util.Properties;
import org.eclipse.emf.teneo.PersistenceOptions;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.cfg.Environment;
public class Connector {
public static void doStuff() {
Properties props = new Properties();
props.setProperty(Environment.DRIVER, "com.postgres.Driver");
props.setProperty(Environment.USER, "postgres");
props.setProperty(Environment.URL, "jdbc:postgres://127.0.0.1:5432/epic");
props.setProperty(Environment.PASS, "postgres");
props.setProperty(Environment.DIALECT, org.hibernate.dialect.ProgressDialect.class.getName());
props.setProperty(PersistenceOptions.CASCADE_POLICY_ON_NON_CONTAINMENT,
"REFRESH,PERSIST,MERGE");
props.setProperty(PersistenceOptions.INHERITANCE_MAPPING, "JOINED");
Configuration cfg = new Configuration();
cfg.configure("hibernate.cfg.xml");// populates the data of the
// configuration file
SessionFactory factory = cfg.buildSessionFactory();
Session session = factory.openSession();
Transaction t = session.beginTransaction();
Query query = session.createQuery("select * from otar");
java.util.List list = query.list();
System.out.println(list);
t.commit();
session.close();
}
public static void main(String[] args) {
doStuff();
}
}编译器说我缺少hibernate.cfg.xml文件,我读过它需要在我的项目的src目录中,我也读到它不是为我生成的,但是我也读到了相反的东西,它是为我生成的。我对这个文件的理解是,表列mapping...it可能有一个更复杂和更有用的用途,但我只是刚刚开始使用它,所以我知道,以下是我的问题:
编辑我忘记提到,这是一个插件项目,我正在使用。
发布于 2014-10-08 20:34:28
Hibernate配置文件(hibernate.cfg.xml)和Hibernate映射文件(*.hbm)有区别。如果您听说过生成的代码,它涉及最后的代码,但是第一个应该包括那些映射文件。有两三种不同的发展方法。首先创建具有映射和生成数据库模式的Java类,其次创建数据库模式和生成Java类(逆向工程),第三是创建已有模式的类和映射。无论使用哪种方法,都由您自己决定,但是如果hibernate.cfg.xml不是由IDE创建的,则应该手动创建它。像Spring这样的一些框架可以为Hibernate提供自己的配置,从而完全忽略了hibernate.cfg.xml。创建hibernate.cfg.xml文件没有什么神奇之处。你可以从
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- here you can place properties and mapping -->
</session-factory>
</hibernate-configuration>而且你是对的,它应该在你的项目的src文件夹中。在运行时,它应该是生成.class文件的地方,即在类路径上。
发布于 2014-10-08 20:15:50
hibernate.cfg.xml应该在类路径中。请将其添加到类路径或类文件夹中。
发布于 2014-10-09 00:07:25
或者你可以使用注解和Spring,所以你赢了
例子:
@Autowired
@Bean(name = "sessionFactory")
public SessionFactory getSessionFactory(DataSource dataSource) {
LocalSessionFactoryBuilder sessionBuilder = new LocalSessionFactoryBuilder(
dataSource);
sessionBuilder.addAnnotatedClasses(Pojo1.class);
sessionBuilder.addAnnotatedClasses(Pojo2.class);
sessionBuilder.addProperties(getHibernateProperties());
return sessionBuilder.buildSessionFactory();
}
private Properties getHibernateProperties() {
Properties properties = new Properties();
properties.put("hibernate.show_sql", "true");
properties.put("hibernate.dialect",
"org.hibernate.dialect.PostgreSQLDialect");
return properties;
}https://stackoverflow.com/questions/26265295
复制相似问题