被问到spring是如何控制事务的?你是怎么回答的?

468 篇文章 0 订阅
317 篇文章 0 订阅
spring的事务是通过“声明式事务”的方式对事务进行管理,即在配置文件中进行声明,通过AOP将事务切面切入程序。最大的好处是大大减少了代码量,比如:
Java code
?
1
2
3
4
Transaction tx=session.getTransaction();
session.beginTransaction();
tx.commit();
tx.rollback();


等等这类代码不用在每个方法中重复的去写,简化了程序,提高了工作效率。

回复于: 2013-11-04 09:42:23

引用 3 楼 forgetsam 的回复:
有P惭愧的,用框架/了解框架原理/写框架是一个层面的事吗。
有道理,如果目前拿4000块钱一个月,那么你不必懂它是怎么实现的。如果我是面试官我也会这样的问题,我觉不期许你都能知道,但如果你刚好都知道那不是太好了么

回复于: 2013-11-04 10:26:49
1.IOC控制反转:控制权由对象本身转向容器,由容器对bean对象进行控制。
2.AOP面向切面编程:把具体的类创建对应的代理类,通过代理类来对具体类进行操作。
spring是一个容器,通过spring这个容器来对对象进行管理,根据配置文件来实现spring对对象的管理。
就这样理解吧,暂时我也只能这么回答,太深入我也不知道怎么说了

回复于: 2013-11-04 17:51:38
SPRING的事务贯彻始终的

源代码没有读过
但是不管AOP还是IOC都有事务支持的

推测一下
SPRING是一个大的容器,一个大的工厂类
那么当你从SPRING中获取一个对象的时候
在建立对象的时候
先开启了事务,然后将对象给你,让 你去使用
在你方法结束后会交回对象
这个时候提交事务并关闭事务

这些操作都在框架内实现
所以只要使用了SPRING就一定会被事务所包围着

回复于: 2013-11-05 11:09:35
要明白事务是怎么样的一个概念,自己写事务又如何做

try{
// 业务逻辑
if(成功)
  commit();
}catch(e){
  // 出现异常
  rollback();
}

spring会捕获到你往上抛的异常,然后帮你try catch,如果发现捕获到异常,会就把connection不提交,直接回滚,所以我们在配置声明式事务的时候会有一个参数是什么异常类,默认应该是runtimexcepttion吧...
回复于: 2013-11-05 11:13:45
去看看Java的动态代理就明白原理是怎么回事了。

回复于: 2013-11-05 14:33:01
我的建议是这样的,首先回答出IOC和AOP,然后简单的简绍这两个东西,说的不需要太多,但是要达到重点,然后,直接offer,


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值