面试:Spring事务管理
2010-06-09 17:22
127 查看
很久没有看理论知识,甚至于丢掉了基础知识。这个问题当你为寻找一份体面的工作时尤其突出。
接到一个电话面试,面试官问这样一个问题: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如何进行事务管理?这个怎么说呢,难道是讲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的理解也更深入了。
相关文章推荐
- 2017年4月美团Android面试总结
- 一些面试就业Tips送给在校生
- google面试题目11
- 为何谷歌面试从不超过 30 分钟
- 面试中怎么回答HashMap的工作原理
- 随手记java开发实习生面试
- 面试题目--Asp.net中Get,Set的详细说明
- c#面试笔试题 (全部)
- 和为s的两个数字 【微软面试100题 第十四题】
- <笔试><面试>C/C++单链表(最综合)最全工程从建立到相关函数实现
- Android面试题目整理与解说(一)
- 50个面试的经典问题及答案1收藏
- 武汉群硕面试简历
- 华为研发面试总结
- 笔试面试成对出现的一组数,只有一个或两个只出现一次的数字,找到它们。
- 第一次面试体验
- 软件开发者面试百问
- 面试100题-4
- Java面试03--Overload和Override的区别详解
- 面试小问题