Spring + Hibernate управление сессиями - PullRequest
3 голосов
/ 21 июня 2011

Я читал об использовании Spring с Hibernate, и я действительно запутался в управлении сессиями.Надеюсь, кто-то может кое-что прояснить для меня,

Прежде всего, я понятия не имею, как управляются сеансы при использовании HibernateTemplate.Открывается и закрывается ли сеанс при вызове метода Eg Save () в шаблоне?Когда вы используете метод find (), возвращаются ли отдельные объекты?

Я прочитал раздел Spring, посвященный транзакциям, но в основном он говорит об обработке исключений.Я надеялся найти какой-нибудь способ привязки сеанса гибернации к транзакции Spring, чтобы я мог зафиксировать изменения в объектах гибернации после завершения транзакции.Есть ли способ добиться этого?

1 Ответ

2 голосов
/ 21 июня 2011

Весна управляет сессией для вас.Глядя в документацию , в частности в раздел 13.3.1, вы видите

<bean id="mySessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource" ref="myDataSource"/>
    <property name="mappingResources">
      <list>
        <value>product.hbm.xml</value>
      </list>
    </property>
    <property name="hibernateProperties">
      <value>
        hibernate.dialect=org.hibernate.dialect.HSQLDialect
      </value>
    </property>
  </bean>

, а затем в разделе 13.3.3 вы видите это

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

Если выПосмотрите внимательно, вы увидите, что фабрика сеансов использует источник данных, а менеджер транзакций использует фабричный сеанс, так что Spring может получить ваши сеансы для вас и обернуть весь код персистентности в транзакцию.

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