解析:
参考答案:Spring 对事务的支持很丰富,除了编程式的处理事务,Spring 还支持声明式事务。
其次 Spring 使用事务服务代理和事务管理器(如 HibernateTransactionManager)来支持事务
服务。另外 Spring 对事务的边界多了一种嵌套事务。
请回答:Spring API 中的 getCurrentSession()和 openSession()两个方法的区别?
解析:
参考答案:getCurrentSession()和 openSession()两个方法主要有两点的区别:(1)采用
getCurrentSession()创建的 session 会绑定到当前线程中,而采用 openSession()创建的
session 则不会。(2)采用 getCurrentSession()创建的 session 在 commit 或者 rollback 后会
自动关闭,而采用 openSession 的方式需要手动进行关闭。
请叙述 Spring 中使用 Hibernate 事务的步骤?
解析:
参考答案:Spring 中使用 Hibernate 事务的步骤为:(1)配置数据源 (2)配置 sessionfactory
(3)配置事务管理器 (4)创建事务服务代理
解析:
参考答案:Spring 声明式事务让我们从复杂的事务处理中得到解脱。使得我们再也无需要去
处理获得连接、关闭连接、事务提交和回滚等这些操作。再也无需要我们在与事务相关的方
法中处理大量的 try…catch…finally 代码。我们在使用 Spring 声明式事务时,有一个非常重
要的概念就是事务属性。事务属性通常由事务的传播行为,事务的隔离级别,事务的超时值
和事务只读标志组成。我们在进行事务划分时,需要进行事务定义,也就是配置事务的属性。
解析:
参考答案:在使用 Spring 时,大部分会用到他的声明式事务,简单的在配置文件中进行一
些规则配置,利用 Spring 的 AOP 功能就能轻松搞定事务问题;这里面就涉及到一个事务的
传 播 属 性 问 题 Propagation , 它 在 TransactionDefinition 接 口 中 定 义 , 以 供
PlatfromTransactionManager使用,PlatfromTransactionManager是 spring事务管理的核心接口。
在 TransactionDefinition 接口中定义了五个不同的事务隔离级别,ISOLATION_DEFAULT 这是
一个 PlatfromTransactionManager 默认的隔离级别,使用数据库默认的事务隔离级别.另外四
个与 JDBC 的隔离级别相对应,ISOLATION_READ_UNCOMMITTED 这是事务最低的隔离级别,
它充许别外一个事务可以看到这个事务未提交的数据。这种隔离级别会产生脏读,不可重复
读和幻像读。