【问题标题】:Dynamically adding entities to hibernate动态添加实体到休眠
【发布时间】:2012-07-21 03:24:06
【问题描述】:

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

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

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

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

谢谢。

【问题讨论】:

  • 嗨,你搞定了吗?到目前为止我正在尝试,但没有成功:(

标签: spring hibernate dynamic entity


【解决方案1】:

来自休眠docs

SessionFactory 的内部状态是不可变的。一旦它被创建,这个内部状态就会被设置。此内部状态包括有关对象/关系映射的所有元数据。

您可以为每组动态加载的实体设置一个单独的 SessionFactory。为它创建一个Configurationadd your new classes。使用它来创建new SessionFactoryEntityManagerFactory

【讨论】:

  • 如果我去创建单独的会话工厂,连接和事务管理会受到怎样的影响?这种方法是否需要重新启动应用程序?
  • 我希望 SessionFactories 会有独立的连接和事务。至于重新启动您的应用程序,我认为没有必要这样做。
【解决方案2】:

方法如下:

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...

【讨论】:

    猜你喜欢
    • 2019-10-03
    • 2013-06-16
    • 1970-01-01
    • 1970-01-01
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多