动态添加实体到休眠

问题描述 投票:2回答:2

我们如何为休眠添加更多实体?我是一个基于spring和hibernate构建的独立应用程序。

我有关于新实体的类文件的元数据。如何在不重新启动或更改confugation XML文件的情况下将它们添加到hibernate会话工厂?

所有映射都由hibernate本身管理。并且只有连接参数等配置在XML中维护。

简而言之,如果我有实体的类文件位置,我如何指示hibernate从那里拾取实体,而无需重新启动或更改配置文件?

谢谢。

spring hibernate dynamic entity
2个回答
2
投票

来自Hibernate docs

SessionFactory的内部状态是不可变的。创建后,将设置此内部状态。此内部状态包括有关对象/关系映射的所有元数据。

你可以做的是为每组动态加载的实体都有一个单独的SessionFactory。创建一个Configurationadd your new classes。用它来创建一个new SessionFactoryEntityManagerFactory


1
投票

这样做的方法如下:

Configuration configuration = new Configuration().configure("hibernate.cfg.xml"); // base configuration

configuration.addAnnotatedClass(MyClass1.class); // @Entity classes
configuration.addAnnotatedClass(MyClass2.class);
configuration.addAnnotatedClass(MyClassN.class);

Session session = configuration.buildSessionFactory().openSession();
// Work with session...
© www.soinside.com 2019 - 2024. All rights reserved.