Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.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 HibernateTemplate和Spring@Transactional如何协同工作?_Java_Spring_Hibernate_Spring Transactions - Fatal编程技术网

Java HibernateTemplate和Spring@Transactional如何协同工作?

Java HibernateTemplate和Spring@Transactional如何协同工作?,java,spring,hibernate,spring-transactions,Java,Spring,Hibernate,Spring Transactions,对于所有CRUD操作,我们在DAO中使用HibernateTemplate 我的问题是,我们在服务上使用spring@Transactional,因为spring管理事务,所以HibernateTemplate在我更新多个DAO的senario中的行为如何。这意味着当使用Spring@Transactional时,HibernateTemplate会在不同的DAO之间使用相同的会话吗 @Transactional public boolean testService(SObject test)[

对于所有CRUD操作,我们在DAO中使用HibernateTemplate

我的问题是,我们在服务上使用spring
@Transactional
,因为spring管理事务,所以HibernateTemplate在我更新多个DAO的senario中的行为如何。这意味着当使用Spring
@Transactional
时,HibernateTemplate会在不同的DAO之间使用相同的会话吗

@Transactional
public boolean testService(SObject test)[

     dao1.save(test.getOne());
     dao2.save(test.gettwo());

}

这就是DAO类的外观:

public class GenericHibernateDao<T, PK extends Serializable> extends HibernateDaoSupport
.
.
.
public PK save(T newInstance) {
    return (PK) getHibernateTemplate().save(newInstance);
}
公共类generichBernateDao扩展了HibernateDaoSupport
.
.
.
公共主键保存(T newInstance){
返回(PK)getHibernateTemplate().save(newInstance);
}

HibernateTransactionManager非常清楚这一点:

此事务管理器适用于使用单个Hibernate SessionFactory进行事务数据访问的应用程序,但它也支持事务内的直接数据源访问(即使用相同数据源的普通JDBC代码)。这允许混合访问Hibernate的服务和使用普通JDBC的服务(不知道Hibernate)!应用程序代码需要遵循与org.springframework.jdbc.datasource.DataSourceTransactionManager相同的简单连接查找模式(即DataSourceUtils.getConnection或通过TransactionAwareDataSourceProxy)

只要您通过知道连接代理的助手类(如
DataSourceUtils
)访问连接,就可以了(而
JdbcTemplate
在后台使用该代理)