2

我想做:@Autowire Session session。对于hibernate 3,这里描述了这个过程。它使用 ...hibernate3.SessionFactoryUtils.getSession。但是在 spring 3.2 中 ...hibernate4.SessionFactoryUtils 中没有这样的方法

4

1 回答 1

4

Spring3.x发生了很大的变化,前几天我也遇到了同样的问题,通过官方文档得知Spring不再提供HibernateTemplate和HibernateDaoSupport,建议使用Hibernate纯API,关于你的这里的困惑是我的解决方案:

首先,在 applicationContext.xml 中定义一个 sessionFactory bean,

<!--  sessionFactory -->
    <bean id="sessionFactory"
          class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="packagesToScan">
            <list>
                <value>com.bbs.*.entity</value>
            </list>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">
                    ${hibernate.dialect}
                </prop>
                <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
                <prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
                <prop key="hibernate.connection.autocommit">${hibernate.connection.autocommit}</prop>
                <prop key="hibernate.connection.url">jdbc:mysql://localhost/bbs</prop>
                <prop key="hibernate.connection.driver_class">com.mysql.jdbc.Driver</prop>
                <prop key="hibernate.connection.username">root</prop>
                <prop key="hibernate.connection.password">123456</prop>
            </props>
        </property>
        <property name="dataSource">
            <ref bean="dataSource" />
        </property>
    </bean>

然后,在你的 DAO

@Autowired
@Qualifier("sessionFactory")
private SessionFactory sessionFactory;

public Session getSession() {
    return sessionFactory.getCurrentSession();
}

这样,您将获得休眠会话,然后做您想做的事,尽情享受吧:)

于 2013-04-02T13:33:42.223 回答