栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

没有@Transactional批注的Spring托管事务

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

没有@Transactional批注的Spring托管事务

根据文档(Spring
docs
),它仅仅是元数据,它表明方法或接口可以由“具有交易意识的”事物(例如

<tx:annotation-driven/>
)进行配置。

相信只有 tx:annotation驱动 并且没有

@Transactional
属性,我相信您可以应用“默认”事务性:

  • 传播设置是 必需的
  • 隔离级别为 DEFAULT
  • 事务是读/写。
  • 事务超时默认为基础事务系统的默认超时,如果不支持超时,则默认为无。
  • 任何 RuntimeException都会 触发回滚,而任何选中的 Exception 都不会触发。

假设您使用的

<tx:annotation-driven />
是通过事务管理器来驱动它,那么缺少该
@Transactional
属性意味着您无法应用诸如
readOnlyisolationpropagationpropagationrollbackFor
noRollbackFor属性

我相信MVC稍有不同-Hibernate会话直接与MVC请求绑定-即,当收到请求时,事务开始。

回到您的示例,HibernateDAOSupport中的getSession()的代码如下:

protected final Session getSession()    throws DataAccessResourceFailureException, IllegalStateException {    return getSession(this.hibernateTemplate.isAllowCreate());}

依次调用:

protected final Session getSession()    throws DataAccessResourceFailureException, IllegalStateException {    return getSession(this.hibernateTemplate.isAllowCreate());}

最终要求:

private static Session doGetSession(    SessionFactory sessionFactory, Interceptor entityInterceptor,SQLExceptionTranslator jdbcExceptionTranslator, boolean allowCreate)

从根本上讲,Transaction:Session绑定为1:1
AFAIK,并且没有事务运行的唯一方法是使用说JBoss,它具有“嵌入”持久层,为您(在幕后)提供了事务性。即使您在调用

getQuery()
之后
getSession()
仍然有效地发生了事务,因为它是JDBC
/ Hibernate连接。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/401312.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号