需求如下,2个表结构完全相同的数据库db1和db2,db1为sql2005,db2为mysql。现在需要通过程序将db1的某些表的某些数据导入到db2。
思路如下:因为sql2005系统已将hibernate的映射关系做好(mysql也包含这些映射文件),于是想利用这个映射关系通过级联自动获取所有相关表的数据。
比如选定主表A,通过加载A表的部分数据,利用级联关系获取和A表相关的所有表数据形成对象obj。然后将obj通过session.replicate持久化到mysql,达到同步数据的目的。
现在的问题是:原有映射文件的级联数据都是惰性获取lazy=true,无法在session关闭前得到所有级联数据。
Hibernate.initialize()方法只能针对具体对象强制获取数据,无法自动获取所有级联数据,也不行。
有没有什么在不修改原有映射文件lazy=true的情况下达到session关闭前获取所有级联对象数据的办法?或者给个别的比较优雅的解决方案?

解决方案 »

  1.   

    <mvc:interceptors>
      <bean id="openSessionInViewInterceptor"   class="org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor">
    <property name="sessionFactory" ref="sessionFactory"></property>
      </bean>
    </mvc:interceptors>它有两种配置方式OpenSessionInViewInterceptor和OpenSessionInViewFilter(具体参看SpringSide),功能相同,只是一个在web.xml配置,另一个在application.xml配置而已。
      

  2.   

    你说的应该是另外一个问题。
    我这个问题和系统是BS还是CS架构无关,就是2层的系统。
    说的白一点,就是在只有hibernate框架的应用里“有没有什么在不修改原有映射文件lazy=true的情况下达到session关闭前获取所有级联对象数据的办法?”