面试:Spring事务管理
来源:互联网 发布:12345宿迁网络问政 编辑:程序博客网 时间:2024/06/05 21:18
很久没有看理论知识,甚至于丢掉了基础知识。这个问题当你为寻找一份体面的工作时尤其突出。
接到一个电话面试,面试官问这样一个问题:spring如何进行事务管理?这个怎么说呢,难道是讲tx:advice,aop:config,这些太具体了,上机配置还能OK,电话里我就说不出来了,支支吾吾半天想起spring配置Propagation应该算是事务管理,就说了6个级别......后面可想而知,面试得一蹋糊涂。
这都怪平时基础不扎实,理论不深入,都是只是为了完成任务而工作造成的。就像这个propagation的中文名称叫传播行为,虽然看着propagation.***那7个传播行为知道对应的事务处理过程,如propagation。PROPAGATION_MANDATORY就知道是配了它就不能在非事务控制的类里头直接调用了,因为它是必须在一个事务里头的。这个是实际工作经验了,但是在面试的时候却往往很难派上用场,因为你很难想起--工作经验是存在大脑数据库里的触发器,它需要在特定的场合才会触发;面试时更多需要的是理论。
懊恼得要死,为失去一个愿意去为之工作余生的工作机会一夜难以入睡......天亮以后,头晕晕的,开始查找答案,答案如下(不是标准答案,仅个理解):
粗一点来讲,就是spring的事务管理分为编程式的事务管理与声明式的事务管理;所有事务管理都抽象为事务操作管理类(PlatformTransactionManager),事务状态(TransactionStatus)和定义了事务的传播行为和隔离级别的类(TransactionDefinition)这三个接口;
再细点来说,spring有三种事务管理的配置方式:
1 用TransactionFactoryBean代理dao事务处理;
2 用aop:config声明要进行事务增强的切面,用tx:advice声明具体方法的事务属性(传播行为,隔离级别,是否可读,抛出异常是否回滚)及应用的事务管理器;
3 用@Transactional注解配置事务管理;
spring的事务管理器有:
与hibernate集成的话用hibernateTransactionManager, 直接使用jdbc用datasourceTransactionManager,如果要把事务管理委托给底层应用服务器的JTA实现就用JtaTransactionManager;
这样自己把spring的事务管理知识梳理了一遍以后,对spring的理解也更深入了。
- 面试:Spring事务管理
- 事务管理之Spring事务管理
- Spring事务管理
- spring事务管理
- Spring事务管理
- Spring事务管理
- Spring事务管理
- Spring事务管理
- Spring事务管理
- Spring 事务管理
- Spring事务管理
- spring 事务管理
- spring 事务管理
- spring 事务管理
- spring事务管理
- Spring 事务管理
- Spring事务管理
- spring事务管理
- synchronized——java同步关键字
- C# 获取今天,昨天,上周,下周,上月,下月等等一些日期格式
- C# 获取今天,昨天,上周,下周,上月,下月等等一些日期格式
- SQL函数一例
- 浅析数据源在JDBC中的应用(4)
- 面试:Spring事务管理
- 汽车电子软件开发中的几个问题(1): 大纲和前言
- Oracle PL/SQL Developer使用技巧
- TWAIN 操作
- VS2005调试HTK
- jQuery javaScript js 判断浏览器的类型、版本的方法
- 使用maven2搭建SSH框架
- 日常工具
- IO streambuf introduction