写程序,做产品,过日子

成功其实很简单,就是强迫自己坚持下去

BlogJava 首页 新随笔 联系 聚合 管理
  69 Posts :: 1 Stories :: 92 Comments :: 0 Trackbacks

Spring对Hibernate Session Factory提供了高度封装。如下例所示。

<bean id="mySessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="myDataSource"/>
<property name="mappingResources">
<list>
<value>product.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.HSQLDialect
</value>
</property>
</bean>

然而,在我的案例中,因为业务需要,我们必须在运行时加入新的HBM。在单独使用Hibernate的时,只要取到Hiberante Configuration对象,修改一下配置,然后rebuild session factory就可以了。

可是经Spring这一封装,我只能取到一个只读的SessionFactory对象,无法进行重置。

这里有两种可能方法,但我都不知道如何做。

1,取到LocalSessionFactoryBean对象进行重置。

2,取到Hibernate Configuration对象进行重置。

Technorati : , ,

posted on 2007-06-11 17:46 Welkin Hu 阅读(4490) 评论(5)  编辑  收藏 所属分类: Java

Feedback

# re: Spring中如何获取和重置一个BeanFactory对象?或者说,如何动态修改Hibernate Configuration? 2007-06-11 19:08 dennis
你是怎么得到SessionFactroy的呢?HibernateDaoSupport的getSessionFactory得到的就是原生的SessionFactroy啊  回复  更多评论
  

# re: Spring中如何获取和重置一个BeanFactory对象?或者说,如何动态修改Hibernate Configuration? 2007-06-11 19:24 dennis
明白你的意思了,你是要得到Hibernate Configuration对象,重新build SessionFactroy吧。
你需要从ApplicationContext中得到LocalSessionFactoryBean,然后利用LocalSessionFactoryBean的newSessionFactory方法得到一个新的SessionFactroy或者getConfiguration()得到Configuration对象,前提你的bean要实现ApplicationContextAware接口得到Context对象,然后:
LocalSessionFactoryBean localSessionFactroyBean=(LocalSessionFactoryBean )ctx.getBean("&mySessionFactory");

Configuration=localSessionFactroyBean.getConfiguration();

加上符号&就可以引用到FactroyBean本身。不过这样一来你就要自己将SessionFactroy设置到HibernateTemplate  回复  更多评论
  

# re: Spring中如何获取和重置一个BeanFactory对象?或者说,如何动态修改Hibernate Configuration? 2007-06-12 09:03 Welkin Hu
@dennis
老大高啊!一下子就找到我想要的解决办法了。俺马上就试试。  回复  更多评论
  

# re: Spring中如何获取和重置一个BeanFactory对象?或者说,如何动态修改Hibernate Configuration? 2007-08-16 17:40 rmonk
为什么Configuration.buildSessionFactory()后会报
org.hibernate.HibernateException: No local DataSource found for configuration - dataSource property must be set on LocalSessionFactoryBean  回复  更多评论
  

# re: Spring中如何获取和重置一个BeanFactory对象?或者说,如何动态修改Hibernate Configuration? 2013-08-26 11:18 grandhappy
@rmonk
@rmonk
请问如何解决问题呢
为什么Configuration.buildSessionFactory()后会报
org.hibernate.HibernateException: No local DataSource found for configuration - dataSource property must be set on LocalSessionFactoryBean

谢谢 QQ591965834  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: