Java面试中常见的开源框架的面试问题(一)

此次整理的面试问题一共两篇博文,因笔者能力所限,整理不够完善的地方希望大家给予宝贵的修改意见。

1、hibernate和mybatis的区别。

相同点:

1)都属于ORM框架

2)都是对jdbc的包装

3)都属于持久层的框架

不同点:

1)hibernate是面向对象的,mybatis是面向sql的;

2)hibernate全自动的orm,mybatis是半自动的orm;

3)hibernate查询映射实体对象必须全字段查询,mybatis可以不用;

4)hibernate级联操作,mybatis则没有;

5)hibernate编写hql查询数据库大大降低了对象和数据库的耦合性,mybatis提供动态sql,需要手写sql,与数据库之间的耦合度取决于程序员所写的sql的方法,所以hibernate的移植性要远大于mybatis。

6)hibernate有方言夸数据库,mybatis依赖于具体的数据库。

7)hibernate拥有完整的日志系统,mybatis则相对比较欠缺。

举个例子来形容下:

hibernate就好比是一款智能机器人,可以给使用者带来很大的方便,但是要研发出来这款机器人需要的成本很高(包括学习以及熟练度);mybatis就好比是一套机械工具,使用起来很简单方便,但是如何使用取决于使用者。

 

 

2、spring框架中需要引用那些jar包,以及这些jar包的用途。

spring.jar是包含完整发布的单个jar包。除了spring.jar文件外还包含13个独立的jar包,各自对应spring不同的组件,在使用时可以根据实际情况选择需要的jar包,不必引入整个spring.jar包中所有的文件

1)spring-core.jar:包含spring框架基本的核心工具类,其他组件都要使用这个包里面的类,是其他组件的核心;

2)spring-bean.jar:是所有的应用都要用到的,包含访问配置文件、创建和管理bean以及进行IoC和DI操作所需的相关类;

3)spring-aop.jar:包含使用AOP特性时所需的类;

4)spring-context.jar:为spring核心提供了大量扩展;

5)spring-dao.jar:包含spring DAO、spring Transaction进行数据访问的所有类;

6)spring-hibernate.jar:包含spring对hibernate 2以及hibernate 3进行封装的所有类;

7)spring-jdbc.jar:包含spring对JDBC数据库访问进行封装的所有类;

8)spring-orm.jar:包含多DAO特性集进行了扩展;

9)spring-remoting.jar:包含支持EJB、JMS、远程调用Remoting方面的类;

10)spring-support.jar:包含支持缓存Cache、JAC、JMX、邮件服务、任务计划Scheduling方面的类;

11)spring-web.jar:包含web开发时,用到spring框架时所需的核心类;

12)spring-webmvc.jar:baohan Spring MVC框架相关的所有类;

13)spring-mock.jar:包含spring一整套mock类来辅助应用的测试。

 

3、spring中BeanFactory和ApplicationContext的联系和区别。

BeanFactory是spring中较为原始的Factory,无法支持spring的许多插件,如AOP功能、Web应用等。

ApplicationContext接口是通过BeanFactory接口派生而来的,除了具备BeanFactory接口的功能外,还具备资源访问、事件传播、国际化消息访问等功能。

总体区别如下:

1)使用ApplicationContext,配置bean默认配置是singleton,无论是否使用,都会被实例化。优点是预先加载,缺点是浪费内存;

2)使用BeanFactory实例化对象时,配置的bean等到使用的时候才会被实例化。优点是节约内存,缺点是速度比较慢,多用于移动设备的开发;

3)没有特殊要求的情况下,应该使用ApplicationContext完成,ApplicationContext可以实现BeanFactory所有可实现的功能,还具备其他更多的功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值