1

这是我第一次使用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的项目目录中,我还读到它没有为我生成,但我也读到了相反的内容为我生成...我对这个文件的理解是表列映射需要它...它可能有更复杂和有用的用途,但我才刚刚开始,所以就我所知,这里是我的问题:

  1. 它是为我生成的还是我需要创建它?
  2. 可以创建吗?像这样的好习惯吗?
  3. 我手工制作有什么好处。
  4. 是否有关于如何创建一个的说明?

编辑我忘了提到这是我正在使用的插件项目。

4

3 回答 3

1

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-08T20:34:28.357 回答
0

hibernate.cfg.xml 应该在类路径中。请将其添加到类路径或类文件夹中。

于 2014-10-08T20:15:50.187 回答
0

或者您可以使用注释和 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;
}
于 2014-10-09T00:07:25.847 回答