hibernate - Spring + Hibernate session 管理

标签 hibernate spring

我一直在阅读有关在 Hibernate 中使用 Spring 的内容,我对 session 管理感到非常困惑。希望有人能为我解决一些问题,

首先,我不知道使用 HibernateTemplate 时如何管理 session 。当您在模板上调用方法(例如 Save())时, session 是否打开和关闭?当您使用 find() 方法时,是否返回分离的对象?

我已经阅读了 Spring 关于事务的部分,但它主要讨论的是处理异常。我希望找到某种方法将 hibernate session 绑定(bind)到 Spring 事务,以便我可以在事务完成时提交对 hibernate 对象的更改。有没有办法实现这个目标?

最佳答案

Spring 为您管理 session 。寻找documentation ,特别是在第 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>

如果你仔细观察,你会发现 session 工厂使用数据源,事务管理器使用 session 工厂,这样 Spring 就可以为你获取 session ,并将所有持久性代码包装在事务中。

关于hibernate - Spring + Hibernate session 管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6426708/

相关文章:

Java - 使用 hibernate 读取从 MYSQL 查询返回的列表

java - Hibernate 为 MySQL 生成错误的内部连接查询

java - spring data save iterable方法是否使用批量操作并按相同顺序返回结果?

java - Spring JtaTransactionManager 和 HibernateTransactionManager 的区别

mysql - hibernate 连接在 10 到 12 小时不活动后丢失

java - JPA。 JoinTable 和两个 JoinColumns

java - 如何在 JSP 中迭代列表对象?

java - 将现有的 Wicket 应用程序用于 Android 应用程序

java - 如何配置 Thymeleaf 模板位置

java - 有没有一种方法可以在不使用 Camel 中的 .bean 关键字的情况下在我的路由中 Autowiring 一个 bean?