首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Hibernate:通过从某个位置读取hbm映射文件来创建动态表

Hibernate:通过从某个位置读取hbm映射文件来创建动态表
EN

Stack Overflow用户
提问于 2019-06-07 17:46:15
回答 2查看 245关注 0票数 2

如何从hbm文件动态创建表?

我的产品有多个客户。为了添加新的客户端,客户端将提供hbm映射文件来存储数据。(每个客户端具有不同的数据和表)。

添加新客户端时,将调用带有hbm文件位置的REST api。

hibernate如何通过动态读取hbm文件来创建表?

EN

回答 2

Stack Overflow用户

发布于 2019-06-07 18:05:29

嗨,这将是一个两步的过程。

  1. 您需要在运行时中创建Hibernate会话工厂,以便在收到hbm文件后强制hibernate创建表。您可以在配置中使用以下属性来执行此操作:

hibernate.hbm2ddl.auto

在同一个配置文件中,您需要引用传入的文件。您可以使用一些模板魔术,或者您也可以添加传入的编程式。你需要检查一下。你可以自己检查如何做得最好,我相信在hibernate 4中你可以在编程上做到这一点。

  1. 第二步是使用Hibernate Dynamic Models http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html_single/#persistent-classes-dynamicmodels,这是因为您不会在运行时实现实体。
票数 0
EN

Stack Overflow用户

发布于 2019-06-07 18:32:00

动态加载hbm文件的示例代码:

代码语言:javascript
运行
复制
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();
    }

}

希望这能有所帮助:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56491929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档