【发布时间】:2019-06-07 09:46:14
【问题描述】:
如何从hbm文件动态创建表?
我的产品有多个客户。添加新客户端时,客户端将提供hbm 映射文件来存储数据。 (每个客户端都有不同的数据和表格)。
在添加新客户端时,将使用 hbm 文件位置调用 REST api。
hibernate如何通过动态读取hbm文件来创建表?
【问题讨论】:
标签: java spring hibernate spring-boot spring-data-jpa
如何从hbm文件动态创建表?
我的产品有多个客户。添加新客户端时,客户端将提供hbm 映射文件来存储数据。 (每个客户端都有不同的数据和表格)。
在添加新客户端时,将使用 hbm 文件位置调用 REST api。
hibernate如何通过动态读取hbm文件来创建表?
【问题讨论】:
标签: java spring hibernate spring-boot spring-data-jpa
您好,这将是一个两步过程。
您需要在运行时创建Hibernate Session Factory,以便在收到hbm 文件后强制hibernate 创建表。您可以在配置中使用以下属性来执行此操作:
hibernate.hbm2ddl.auto
在同一个配置文件中你需要引用传入的文件。您可以做一些模板魔术,或者您也可以添加传入的程序化。你需要检查一下。您可以自己检查如何做到最好,我相信在 hibernate 4 中您可以通过编程方式做到这一点。
【讨论】:
动态加载hbm文件的示例代码:
public class LoadHBMFile {
private static final SessionFactory session = createSession();
private static SessionFactory createSession() {
try {
SessionFactory sessionFactory = new Configuration()
.configure("hibernate.cfg.xml")
.addResource("{full path}/demo.hbm.xml")
.buildSessionFactory();
return sessionFactory;
} catch (Throwable ex) {
System.out.println("Failed" + ex);
}
}
/* To get the sessionfactory */
public static SessionFactory getSession() {
return session;
}
/* To close the sessionfactory */
public static void shutdown() {
getSession().close();
}
}
希望这会有所帮助:)
【讨论】: