【问题标题】:Obtain Hibernate's Configuration in SpringSpring中获取Hibernate的配置
【发布时间】:2010-10-02 19:18:48
【问题描述】:

我的项目使用了 Spring、JPA 和 Hibernate,所以所有的 EntityManager 都是由 Spring 注入的。

我需要访问持久类的元数据,例如列长度和可选性。我知道获取此信息的唯一方法是通过 Hibernate 的 Configuration.getClassMapping(String className)。在没有JPA和Spring的纯Hibernate项目中,创建SessionFactory后可以保留Configuration(即new Configuration().configure().buildSessionFactory()),但是由于Spring使用LocalEntityManagerFactoryBean以EntityManagerFactory的形式创建SessionFactory,我不确定从哪里获得配置。

如果无法从 Spring 中检索配置,还有其他方法可以访问持久类的元数据吗?

谢谢。

【问题讨论】:

    标签: java hibernate spring jpa


    【解决方案1】:

    事实证明这是不可能的。 Spring 使用 persistence.xml 文件中指定的 PersistenceProvider 实现以标准方式创建 EntityManagerFactory。 HibernatePersistence是Hibernate对PersistenceProvider的实现,使用后不保留Configuration对象。为了公开配置,您需要自己实现 PersistenceProvider,这没什么大不了的。

    【讨论】:

      【解决方案2】:

      我没有使用过 JPA 和 spring,只是直接用 spring 休眠。 但我想架构是相似的。 当直接使用休眠时,使用 LocalSessionFactoryBean 而不是 LocalEntityManagerFactoryBean

      访问休眠配置的方法在this thread from the Spring forum 中描述。也许您也可以调整这种方法以与 LocalEntityManagerFactoryBean 一起使用。

      【讨论】:

      • 不,这行不通,LocalEntityManagerFactoryBean 不会暴露任何 Hibernate 特定的东西(Configuration 也不会被 HibernatePersistence 暴露)。
      猜你喜欢
      • 2014-10-05
      • 1970-01-01
      • 2017-07-04
      • 1970-01-01
      • 2012-01-23
      • 2015-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多