struts、spring、hibernate/ibatis你会删除那个?为什么?
struts、spring、hibernate/ibatis你会删除那个?为什么?
这是一道面试题,我当时犹豫了一下,说会删除struts。
面试官问为什么,我说去掉struts,可以用servlet来替你它,毕竟action层的作用使用servlet完全可以替代。
作用:接受客户端的请求,负责分发至相应的action,通过actionForm拿到相应数据,调用相应的service层,负责转向相应的页面。
回答完之后,又想到了,ibatis或者hibernate的作用使用jdbc不是也能替代吗?
作用:完成一个对象与数据库打交道的过程。也使得开发更具对象化,在某种情况下也提高了生产力,移值性会非常容易,sql语句和代码的分离,使得维护更加容易。
而spring随然说现在还没有一个可行的方案来替代他,但是如果完全不使用它,也不是没有可能。
作用:声明事务,依赖注入,解耦合,配置客户端访问应用程序的方式是单实例还是多实例。
如果是你,你会删除那个?为什么?
------解决方案--------------------其实也。这个应该是在hibernate ibatis里面来选,,因为这两个都是orm框架。其作用也差不多。
知道这个之后就简单了。。
其实面试官真正想问你的是,hibernate和ibatis的优缺点。。
你了解他们的优缺点之后,那么就好回答了。。
在什么情况下删除哪个,什么情况下删除另外个。也就是在什么情况下用hibernate,什么情况下用ibatis。
网上很多他们的区别。说得也还可以。。
其实真正的用什么框架是要针对项目而言,所以面试官的意思不是真的要你给他一个准确答案。。但是要说得合情合理。。
------解决方案--------------------我选ibatis,虽然ibatis上手容易,可以编写更加灵活的SQL语句。
但是,感觉这样会使得开发的工作量非常大。
我们公司从来都是一个人搞定一个项目,
这样的情况下,使用Hibernate3在不使用配置文件(使用Annotation)的情况下,很快就能完成持久层的开发。
而使用ibatis呢?没一个交互过程都要写一个SQL语句,配置文件还有处理映射关系。
最起码,代码量是上去了。
干得多了,就会感觉特别麻烦,有时候总在想,还不如直接JDBC来得快些。
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------这个.如果我回答.
我会说struts.
因为如果是struts1的话,大部分的职能只是收集页面数据,以及页面请求的转发.
我会和面试官说,去掉struts,我可以花几个小时写一个struts的雏形,
可以完成struts的80%的核心功能.
不过我觉得这个问题意义不大,使用哪个框架,完全要根据项目的具体情况而定.
最好的题目是面试官给出一个项目的简单的需求,
然后让你选择用哪几个框架.
这样有意义得多