Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从org.springframework.orm.hibernate4.LocalSessionFactoryBean获取Hibernate SessionFactory?_Java_Spring_Hibernate_Spring Mvc_Configuration - Fatal编程技术网

Java 如何从org.springframework.orm.hibernate4.LocalSessionFactoryBean获取Hibernate SessionFactory?

Java 如何从org.springframework.orm.hibernate4.LocalSessionFactoryBean获取Hibernate SessionFactory?,java,spring,hibernate,spring-mvc,configuration,Java,Spring,Hibernate,Spring Mvc,Configuration,我正在将一个旧的遗留应用程序迁移到Spring。在当前遗留代码的数据访问层中,有一个BaseDataAccessor。此数据访问器通过一种方法提供sessionFactory的引用。为了满足交付日期,我必须保持这个结构不变,为此我需要BaseDataAccessor中Hibernate SessionFactory的引用 通过实现ApplicationContextAware,我能够获得org.springframework.orm.hibernate4.LocalSessionFactoryB

我正在将一个旧的遗留应用程序迁移到Spring。在当前遗留代码的数据访问层中,有一个BaseDataAccessor。此数据访问器通过一种方法提供sessionFactory的引用。为了满足交付日期,我必须保持这个结构不变,为此我需要BaseDataAccessor中Hibernate SessionFactory的引用

通过实现ApplicationContextAware,我能够获得org.springframework.orm.hibernate4.LocalSessionFactoryBean的引用,但我无法将其转换为SessionFactory。有没有办法做到这一点


谢谢本地SessionFactoryBean创建了一个
SessionFactory

@Bean
public LocalSessionFactoryBean sessionFactory() {
    LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
    sessionFactory.setDataSource(dataSource());
    sessionFactory.setPackagesToScan(new String[] { "my.packages" });
    sessionFactory.setHibernateProperties(hibernateProperties());
    return sessionFactory;
}
然后您可以像他的一样注入
SessionFactory

@Autowired
SessionFactory sessionFactory;

如果使用XML配置,则应如下所示:

 <bean id="dataSource"
      class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="${hibernate.connection.driver.class}"/>
    <property name="url" value="${hibernate.connection.url}"/>
    <property name="username" value="${hibernate.connection.username}"/>
    <property name="password" value="${hibernate.connection.password}"/>
</bean>

<bean id="sessionFactory"
      class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="packagesToScan" value="com.example.mypojo"/>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">${hibernate.dialect}</prop>
            <prop key="hibernate.current_session_context_class">thread</prop>
        </props>
    </property>
</bean>

<bean id="transactionManager"
      class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory"/>
</bean>

${hibernate.dial}
线
之后,您只需将SessionFactorybean注入其他xml文件或@Qualifier注释