我试图在我的非Spring代码中获取Spring定义的Hibernate配置和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>
Run Code Online (Sandbox Code Playgroud)
如果我现在调用getBean("sessionFactory"),我返回一个$ Proxy0对象,它似乎是Hibernate SessionFactory对象的代理.但这不是我想要的 - 我需要LocalSessionFactoryBean本身,因为我需要访问Configuration以及SessionFactory.
我需要Configuration对象的原因是我们的框架能够使用Hibernate的动态模型在运行时自动插入映射; 这要求我们更改配置并重建SessionFactory.实际上,我们所要做的就是获取Spring中已经存在的Hibernate配置,以便那些已经在Spring中拥有该信息的客户不需要将它复制到hibernate.cfg.xml文件中使用我们的Hibernate功能.
ska*_*man 41
Spring容器的一个不起眼的特点是在&前缀:
当你需要向一个容器询问一个实际的
FactoryBean实例本身,而不是它生成的bean时,你&在调用getBean方法 时用bean符号(没有引号)作为bean的前缀ApplicationContext.因此对于FactoryBean具有id的给定myBean,调用getBean("myBean")容器返回该产品FactoryBean,并且调用getBean("&myBean")返回FactoryBean实例本身.
所以在你的情况下,使用getBean("&sessionFactory")应该返回LocalSessionFactoryBean实例本身.然后你可以打电话.getConfiguration()来获取Configuration对象.
| 归档时间: |
|
| 查看次数: |
12191 次 |
| 最近记录: |