gpt4 book ai didi

java - 如何传入hibernate配置参数

转载 作者:行者123 更新时间:2023-12-01 10:21:56 27 4
gpt4 key购买 nike

我正在尝试创建多个 hibernate.cfg.xml 文件,因为每个文件都有不同的连接属性。如何在使用它们的每个类中指定我想要的 cfg 文件?

这是我的 session 工厂:

public class DatabaseUtilities {

private static final SessionFactory sessionFactory = buildSessionFactory();

private static SessionFactory buildSessionFactory(String configFile) {
try {
return new AnnotationConfiguration().configure(configFile).buildSessionFactory();
} catch (Throwable ex) {
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}

public static SessionFactory getSessionFactory() {
return sessionFactory;
}

public static void shutdown() {
// Close caches and connection pools
getSessionFactory().close();
}
}

当然,这现在会引发错误,因为我不知道如何将参数传递到顶部的对象中。

这就是我从类(class)调用 session 工厂的方式

Session s = DatabaseUtilities.getSessionFactory().openSession();

我如何修改此代码以获取使用它的类传入的 .xml 字符串?

最佳答案

当您以单例方式封装对 SessionFactory 的访问时,您也许可以重写它以不遵循 Static block initialization but Lazy initialization :

public class DatabaseUtilities {
private static final SessionFactory sessionFactory = null;

private static SessionFactory buildSessionFactory(String configFile) {
try {
return new AnnotationConfiguration().configure(configFile).buildSessionFactory();
} catch (Throwable ex) {
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}

public static synchronized SessionFactory getSessionFactory(String configFile) {
if (sessionFactory == null) {
sessionFactory = buildSessionFactory(configFile);
}
return sessionFactory;
}

public static void shutdown() {
// Close caches and connection pools
getSessionFactory().close();
}

private DatabaseUtilities() {}
}

现在您可以这样调用您的实用程序类:

DatabaseUtilities.getSessionFactory("path/to/hibernate.cfg.xml");

关于java - 如何传入hibernate配置参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35542177/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com