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

来源:互联网 发布:记事本软件下载 编辑:程序博客网 时间:2024/06/10 01:16
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
原创粉丝点击