如何从Spring获取Hibernate Configuration对象?
我正在尝试在非Spring代码中获取Spring定义的Hibernate
Configuration和SessionFactory对象。以下是我的applicationContext.xml文件中的定义:
码:
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.cglib.use_reflection_optimizer">true</prop>
<prop key="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</prop>
</props>
</property>
<property name="dataSource">
<ref bean="dataSource"/>
</property>
</bean>
如果现在调用getBean(“ sessionFactory”),我将返回一个$ Proxy0对象,该对象似乎是Hibernate
SessionFactory对象的代理。但这不是我想要的-
我需要LocalSessionFactoryBean本身,因为我需要访问Configuration以及SessionFactory。
我需要Configuration对象的原因是我们的框架能够使用Hibernate的动态模型在运行时自动插入映射。这就要求我们更改配置并重建SessionFactory。确实,我们要做的就是获取Spring中已经存在的Hibernate配置,以便那些在Spring中已经拥有该信息的客户无需将其复制到hibernate.cfg.xml文件中即可。使用我们的hibernate功能。
回答:
Spring容器的一个不起眼的特点是在&
前缀:
当您需要向容器询问实际
FactoryBean
实例本身而不是容器所产生的bean时,请&
在调用的getBean
方法 时在beanid前面加上“&”符号(不带引号)
ApplicationContext
。因此,对于FactoryBean
ID 为的给定
myBean
,调用getBean("myBean")
容器会返回的乘积FactoryBean
,调用会
getBean("&myBean")
返回FactoryBean
实例本身。
因此,在您的情况下,using
getBean("&sessionFactory")
应该返回LocalSessionFactoryBean
实例本身。然后,您可以调用.getConfiguration()
获取Configuration
对象。
以上是 如何从Spring获取Hibernate Configuration对象? 的全部内容, 来源链接: utcz.com/qa/411332.html