Создание HibernateTemplate с помощью org.springframework.orm.hibernate4.LocalSessionFactoryBean - PullRequest
3 голосов
/ 20 марта 2012

Я работаю с Spring 3.1 + Hibernate 4.

Я создал следующее 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 предназначен для Hibernate 4.

Я пытаюсь создать HibernateTemplate (org.springframework.orm.hibernate3.HibernateTemplate) через код Java, с помощью этого 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]

Не могли бы вы показать, каксделать это?

Ответы [ 2 ]

7 голосов
/ 20 марта 2012

Начиная с этого поста :

HibernateTemplate больше не рекомендуется использовать (примерно со времени выхода hibernate 3.0.1) больше нет добавленной стоимости, так чтобольше не будет там для hibernate 4. Просто используйте обычный SessionFactory и используйте метод getCurrentSession для получения текущего транзакционного сеанса (не используйте openSession !!!!), и вы готовы идти ...

Из javadoc пакета org.springframework.orm.hibernate4 :

Содержит реализацию SPI транзакции Spring для локальных транзакций Hibernate.Этот пакет намеренно довольно минимален, без шаблонных классов и т. П., Чтобы максимально точно следовать рекомендациям Hibernate.

0 голосов
/ 02 августа 2017

Вам не нужно расширять класс поддержки hibernate dao в последней версии Spring. Вы можете напрямую добавить hibernate sessionfactory из конфигурации на основе xml / java. И это также должно быть введено в менеджер транзакций. Обратитесь по этой ссылке для лучшего понимания: http://hantsy.blogspot.in/2013/07/use-native-hibernate-4-api.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...