如何在应用程序启动时从 java 代码更改 Hibernate connection.url 属性
Posted
技术标签:
【中文标题】如何在应用程序启动时从 java 代码更改 Hibernate connection.url 属性【英文标题】:How to change Hibernate connection.url property from java code at application startup 【发布时间】:2014-05-28 15:37:03 【问题描述】:hibernate.cfg.xml:
<!-- Database connection settings -->
<property name="connection.driver_class">org.hsqldb.jdbcDriver</property>
<property name="connection.url">jdbc:hsqldb:file:mycustomurl</property>
<property name="connection.username">sa</property>
<property name="connection.password"></property>
我的应用程序有一个自定义安装文件夹,我想在其中找到我的 hsql 数据库。问题是我每次启动时都会在应用程序的主类中初始化位置。我该如何更改
<property name="connection.url">jdbc:hsqldb:file:mycustomurl</property>
mycustomurl 从我的主应用程序?所以我可以使用用户定义的应用程序目录?我还想从主类更改用户名/密码属性。我会在哪里每次启动时都从许可证文件生成密码。有没有办法做到这一点?我尝试了很多方法,发现不推荐使用的 bud 方法/教程。我使用最新版本的 hibernate/hsqldb。
我可以在硬盘的某处生成 hibernate.cfg.xml 然后(以某种方式)加载它吗?解决这个问题的最佳方法是什么?
【问题讨论】:
您是否尝试过以编程方式更改配置? (docs.jboss.org/hibernate/core/3.3/reference/en-US/html/…) 寻找Configuration
像Configuration configuration = new Configuration().configure();
然后configuration.setProperty("hibernate.connection.url",myUrl);
@nachokk 我是否必须删除整个 cfg.xml 文件,或者它们可以与“配置”结合使用?
可以合并,有HibernateUtil
吗?
@nachokk 还没到那一步。我目前正在关注本教程icesoft.org/wiki/display/ICE/… 这让我很困惑,我必须找到答案,所以我希望它有效:) 我是休眠新手.
【参考方案1】:
在你的助手类中你可以放这样的东西
我从您提供的link 复制
public class HibernateUtil
private static final SessionFactory sessionFactory = buildSessionFactory();
private static SessionFactory buildSessionFactory()
try
Configuration configuration = new Configuration().configure()
.setProperty("hibernate.connection.url", "MY URL");
ServiceRegistryBuilder serviceRegistryBuilder = new ServiceRegistryBuilder()
.applySettings(configuration.getProperties());
return configuration.buildSessionFactory(serviceRegistryBuilder
.buildServiceRegistry());
catch (Throwable ex)
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
public static SessionFactory getSessionFactory()
return sessionFactory;
【讨论】:
这是我在 bud ServiceRegistryBuilder 被弃用之前绑定的一种类似方式,这让我失望了。可以使用弃用的类吗? @TomasBisciak 你用的是什么休眠版本?我有 hibernate4 并且没有被弃用 4.3.5 最终版 @TomasBisciak 我有 4.2.6 并且在那里没有被弃用,可能我不知道还有其他更好的创建方法:D 我决定不用休眠 .. 并创建我自己的类似框架的做事方式:) 无论如何谢谢帮助以上是关于如何在应用程序启动时从 java 代码更改 Hibernate connection.url 属性的主要内容,如果未能解决你的问题,请参考以下文章
首先是EF6代码:如何在启动时从EDMX文件加载DbCompiledModel?
手机日期更改时从 sharedpreference 中删除保存的数据