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

Java Hibernate:通过从某个位置读取hbm映射文件来创建动态表,java,spring,hibernate,spring-boot,spring-data-jpa,Java,Spring,Hibernate,Spring Boot,Spring Data Jpa,如何从hbm文件动态创建表 我的产品有多个客户。对于添加新客户机,客户机将提供hbm映射文件来存储数据。(每个客户端具有不同的数据和表) 添加新客户端时,将使用hbm文件位置调用RESTAPI hibernate如何通过动态读取hbm文件来创建表?您好,这将是一个两步过程 您需要在运行时创建Hibernate会话工厂,以便在收到hbm文件后强制Hibernate创建表。您可以在配置中使用以下属性来执行此操作: hibernate.hbm2ddl.auto 在同一配置文件中,您需要引用传入文件。您

如何从hbm文件动态创建表

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

添加新客户端时,将使用
hbm
文件位置调用RESTAPI


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

您好,这将是一个两步过程

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

    hibernate.hbm2ddl.auto

  • 在同一配置文件中,您需要引用传入文件。您可以做一些模板魔术,或者您也可以添加传入的编程。你需要检查一下。你可以自己检查如何做到最好,我相信在Hibernate4中你可以通过编程来做到

  • 第二步是使用Hibernate动态模型 这是因为您在运行时不会有实体的实现

  • 动态加载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();
        }
    
    }
    
    希望这有帮助:)