Java MyIbatis Spring事务关闭会话
当我将MyIbatis与spring事务一起使用时,使用注释驱动的声明性方法,我是否需要管理会话Java MyIbatis Spring事务关闭会话,java,spring,transactions,ibatis,Java,Spring,Transactions,Ibatis,当我将MyIbatis与spring事务一起使用时,使用注释驱动的声明性方法,我是否需要管理会话 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" > <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:m
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" >
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:myibatis.xml"/>
<property name="mapperLocations" value="classpath*:mappers/*.xml" />
</bean>
<bean id="asTableService" class="com.sirio.cisl.dal.AsTableService">
<property name="session" ref="sqlSession" />
</bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache">
<constructor-arg index="0" ref="sqlSessionFactory" />
<constructor-arg index="1" value="BATCH" />
</bean>
如果没有交易,我通常会这样做:
public int insertPnt(Movimenti value) {
try (SqlSession session = sqlSessionFactory.openSession()) {
for (Movimenti value : values) {
session.insert(
"com.sirio.cisl.dal.MovimentiMapper.insertSelective",
value);
}
} catch (Exception e) {
log.error("Error inserting movimenti "+user+" anno "+anno+" "+ e.getMessage());
throw e;
}
}
但是从MyIbatis Spring文档中我读到了
MyBatis SqlSession为您提供了具体的处理方法
以编程方式处理事务。。。。。。。。。。。
. 这意味着Spring将始终处理您的问题
交易。
不能调用SqlSession.commit()、SqlSession.rollback()或
Spring管理的SqlSession上的SqlSession.close()
因此,当我只是将@Transaction
注释(以及
配置)添加到方法中时,我怀疑我的操作是否正确
@Transactional(rollbackFor=Exception.class)
public int insertPnt(Movimenti value) {
try (SqlSession session = sqlSessionFactory.openSession()) {
..............
}
事务管理器是否负责会话资源?或者我必须删除try-catch
子句
Thk我向MyIbatis用户组发布了相同的问题。答复很有用: 要使用MyBatis,您需要SqlSesion或Mapper接口。 使用“经典”MyBatis,您可以从 SqlSessionFactory,但在使用Spring时会发生变化 因此,我遵循以下示例: 我向服务类注入了一个sqlSessionTemplate,它在内部负责打开和关闭会话
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" >
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:myibatis.xml"/>
<property name="mapperLocations" value="classpath*:mappers/*.xml" />
</bean>
<bean id="asTableService" class="com.sirio.cisl.dal.AsTableService">
<property name="session" ref="sqlSession" />
</bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache">
<constructor-arg index="0" ref="sqlSessionFactory" />
<constructor-arg index="1" value="BATCH" />
</bean>
戴维德