当前位置: 首页 > 知识库问答 >
问题:

使用hibernate.cfg.xml时更改hibernate.properties文件的位置

尉迟禄
2023-03-14
<hibernate-configuration>
    <session-factory>
       <property name="hibernate.connection.url">url</property>
       <property name="hibernate.connection.username">username</property>
       <property name="hibernate.connection.password">password</property>
    <session-factory>
<hibernate-configuration>
public class HibernateUtil {

  private static final SessionFactory sessionFactory = buildSessionFactory();

  private static SessionFactory buildSessionFactory() {
    // Create the session factory from hibernate.cfg.xml
    Configuration configuration = new Configuration();
    StandardServiceRegistryBuilder serviceRegistryBuilder =
        new StandardServiceRegistryBuilder().applySettings(configuration.getProperties());
    return configuration.buildSessionFactory(serviceRegistryBuilder.build());
  }

  public static SessionFactory getSessionFactory() {
    return sessionFactory;
  }
}

共有1个答案

双元魁
2023-03-14

以编程方式,您可以像这样加载XML和属性:

public class MyHibernate {

  private static final SessionFactory sessionFactory = buildSessionFactory();

  private static SessionFactory buildSessionFactory() {
    try {
        URL r1 = MyHibernate.class.getResource("/hibernate.cfg.xml");
        Configuration c = new Configuration().configure(r1);

        try {
            InputStream is = MyHibernate.class.getResourceAsStream("/hibernate.properties");
            Properties props = new Properties();
            props.load(is);
            c.addProperties(props);
        } catch (Exception e) {
            LOG.error("Error reading properties", e);
        }

        return c.buildSessionFactory();
    } catch (Throwable ex) {
        LOG.error("Error creating SessionFactory", ex);
        throw new ExceptionInInitializerError(ex);
    }
  }

  public static SessionFactory getSessionFactory() {
    return sessionFactory;
  }
}

穿过Spring

您可以使用PropertiesFactoryBean从文件中读入属性并配置LocalSessionFactoryBean:

<bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
    <property name="hibernateProperties">
      <bean class="org.springframework.beans.factory.config.PropertiesFactoryBean">
        <property name="location">path-to-properties-file</property>
      </bean>
    </property>
    ...
  </bean>
 类似资料:
  • 问题内容: 我正在尝试使用Hibernate连接到servlet中的DB。我读到我们可以使用hibernate.cfg.xml或hibernate.properties文件来配置会话。对我来说,它可以与xml一起使用。现在,当我尝试使用属性而不是xml时,它不起作用。据说 没有找到* hibernate.cfg.xml 。但是我没有提到要使用xml文件,事实上我已经删除了该xml文件。 * 请帮我

  • 当我执行playbook时,这可以非常好地工作。但是,当我执行位于其他位置的playbook(因此不是直接在这个目录中)时,导入将不再工作。这样做的原因是它们的导入相对于导入的剧本所在的位置。 同样的情况也发生在使用其他模块的任务中,如复制。他们查找与剧本位置相关的文件。 有没有办法让我的任务为位于不同目录的剧本工作?

  • 问题内容: 我有一个看起来像这样的文本文件: 我想使用node.js将每行的开头替换为“ myString”。因此,每个最终看起来像: 我正在尝试使用正则表达式,但是我怀疑可以使用读取和写入流来完成。 哪种正则表达式将起作用,或者使用node编辑此文件的最佳方法是什么? 问题答案: 根据您的需要,这是“同步”或“异步”的两个选项。

  • 问题内容: 我有一些人已经解决过的问题,但问题是我不了解我的实现中缺少什么。 我的hibernate代码的一部分如下: 问题是我想通过更改hibernate.connection.url属性中的“数据库”一词来选择要在运行时中使用的数据库。 在javaswing中,我正在实现此功能: } 然后,我用按钮检查所做的更改,从组合框中选择所需的数据库: 现在,debug1的输出正在更改,因此我在此打印中

  • 我目前正在通过maven插件使用swagger-codesen:https://github.com/swagger-api/swagger-codegen/tree/master/modules/swagger-codegen-maven-plugin.我已经设置了我希望使用

  • 问题内容: 我正在尝试编写一个node.js脚本,该脚本监视文件目录中的更改,然后打印更改的文件。如何修改此脚本,以便它监视目录(而不是单个文件),并在更改文件时显示目录中的文件名? 问题答案: 试试Chokidar: Chokidar仅使用fs即可查看文件,从而解决了一些跨平台问题。