2012-03-20 65 views
3

創建的HibernateTemplate我和春天3.1工作+ Hibernate的4通過org.springframework.orm.hibernate4.LocalSessionFactoryBean

我創建了以下sessionFactory

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="myDataSource" /> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop> 
      <prop key="hibernate.show_sql">true</prop> 
      <prop key="hibernate.hbm2ddl.auto">validate</prop> 
     </props> 
    </property> 
    <property name="packagesToScan" value="com.my.company"/> 
</bean> 

正如你看到的,上面sessionFactory爲休眠4.

我通過Java代碼試圖箱子一個HibernateTemplateorg.springframework.orm.hibernate3.HibernateTemplate,由sessionFactory,但我不知道如何做到這一點。

我嘗試下面的代碼:

@Resource(name="sessionFactory") 
public void setSessionFactory(LocalSessionFactoryBean sessionFactory) { 
    this.hibernateTemplate = new HibernateTemplate(sessionFactory.getObject()); 
} 

但我發現了以下錯誤消息:

org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'sessionFactory' must be of type [org.springframework.orm.hibernate4.LocalSessionFactoryBean], but was actually of type [org.hibernate.internal.SessionFactoryImpl] 

你能展示如何做到這一點?

回答

7

由於從this post:不建議

的HibernateTemplate使用了(約自 釋放休眠3.0.1)沒有更多的附加價值,這樣是不是 要在那裏了對Hibernate 4.只需使用普通的 的SessionFactory和使用的getCurrentSession方法來獲取 當前事務會話(不使用的openSession !!!!),你是 好去...

從包org.springframework.orm.hibernate4的javadoc的:

包含本地 Hibernate事務Spring的事務SPI的實現。這個包有意地是最小的, 沒有模板類或類似的,以儘可能地遵循本地的Hibernate建議。