运行时的Hibernate配置

时间:2009-08-27 15:34:26

标签: java hibernate

我有hibernate.cfg.xml文件。

<session-factory>

    <!-- Database connection settings -->
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="connection.url"></property>
    <property name="connection.username"></property>
    <property name="connection.password"></property> 

    <!-- JDBC connection pool (use the built-in) -->
    <property name="connection.pool_size">1</property>

.....................

这是文件中最有趣的部分。 现在我必须设置缺失值:url,username,password。 我试图这样做:

public static void SetSessionFactory() {
    try {

      AnnotationConfiguration conf = new AnnotationConfiguration().configure();
      // <!-- Database connection settings -->
      conf.setProperty("connection.url", URL);
      conf.setProperty("connection.username", USERNAME);
      conf.setProperty("connection.password", PASSWORD);
      SESSION_FACTORY = conf.buildSessionFactory();

    } catch (Throwable ex) {
      // Log exception!
      throw new ExceptionInInitializerError(ex);
    }
  }

但它只是从hibernate.cfg.xm加载我的配置,并且不更改任何属性......

url,username,passoword - 是命令行参数,所以我必须在运行时设置它们。

3 个答案:

答案 0 :(得分:23)

尝试在此处致电conf.configure(); 属性可能需要像“hibernate.connection.username”这样的hibernate前缀 希望它有所帮助。

答案 1 :(得分:4)

尝试这样,它工作正常

AnnotationConfiguration conf = new AnnotationConfiguration().configure("/dronehibernate.cfg.xml");

conf.setProperty("hibernate.connection.url","jdbc:mysql://localhost/PAT_DRONE_DB1");

SessionFactory sessionFactory = conf.buildSessionFactory();

Session session = sessionFactory.openSession();

List<NetworkType> channelList = session.createQuery("from NetworkType").list();

答案 2 :(得分:0)

使用Environment class

中的常量