簡體   English   中英

如何從 org.springframework.orm.hibernate4.LocalSessionFactoryBean 獲取 Hibernate SessionFactory?

[英]How to get the Hibernate SessionFactory from org.springframework.orm.hibernate4.LocalSessionFactoryBean?

我正在將一個舊的遺留應用程序遷移到 Spring。 在當前遺留代碼的數據訪問層中,有一個 BaseDataAccessor。 此數據訪問器通過一種方法提供對 sessionFactory 的引用。 為了滿足交貨日期,我必須保持這個結構不變,為此我需要在 BaseDataAccessor 中引用 Hibernate SessionFactory。

我能夠通過實現 ApplicationContextAware 獲得 org.springframework.orm.hibernate4.LocalSessionFactoryBean 的引用,但我無法將其轉換為 SessionFactory。 有沒有辦法做到這一點?

謝謝

LocalSessionFactoryBean創建一個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>

之后,您只需在其他 xml 文件中或使用 @Qualifier 注釋注入 sessionFactory bean。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM