JavaEE常见面试问题

1.常见的ORM框架有哪些?

1.Mybatis
Mybatis是一种典型的半自动的ORM框架,所谓的半自动,是因为还需要手动的写SQL语句,再由框架根据SQL及传入数据来组装为要执行的SQL。

优点为︰

  • 因为由程序员自己写SQL,相对来说学习门槛更低,更容易入门。
  • 更方便做SQL的性能优化及维护。
  • 对关系型数据库的模型要求不高,这样在做数据库模型调整时,影响不会太大。适合软件需求变更比较频繁的系统,因此国内系统大部分都是使用如Mybatis这样的半自动ORM框架。

缺陷为:

  • 不能跨数据库,因为写的SQL可能存在某数据库特有的语法或关键词

2.Hibernate
Hibernate是一种典型的全自动ORM框架,所谓的全自动,是SQL语句都不用在编写,基于框架的API,可以将对象自动的组装为要执行的SQL语句。
优点为∶

  1. 全自动ORM框架,自动的组装为SQL语句。
  2. 可以跨数据库,框架提供了多套主流数据库的SQL生成规则。

缺点为︰

  1. 学习门槛更高,要学习框架API与SQL之间的转换关系对数据库模型依赖非常大,在软件需求变更频繁的系统中,会导致非常难以调整及维护。可能数据库中随便改一个表或字段的定义,Java代码中要修改几十处。
  2. 很难定位问题,也很难进行性能优化:需要精通框架,对数据库模型设计也非常熟悉。

2.Bean容器/loc容器的理解

Spring容器主要是对loC设计模式的实现,主要是使用容器来统一管理Bean对象,及管理对象之间的依赖关系。
创建容器的API主要是BeanFactory和ApplicationContext两种:

  1. BeanFactory是最底层的容器接口,只提供了最基础的容器功能:Bean的实例化和依赖注入,并且使用懒加载的方式,这意味着beans只有在我们通过getBean()方法直接调用它们时才进行实例化。
  2. ApplicationContext(应用上下文)是BeanFactory的子接口,与BeanFactory懒加载的方式不同,它是预加载,所以,每一个bean 都在ApplicationContext启动之后实例化。
  3. 除了基础功能,还添加了很多增强:
    整合了Bean的生命周期管理
    1. i18n国际化功能(MessageSource)
    2. 载入多个(有继承关系)上下文,使得每一个上下文都专注于一个特定的层次,比如应用的web层
    3. 事件发布响应机制(ApplicationEventPublisher)
    4. AOP

3. loC/DI的理解

概念
loC(Inversion of Control)即控制反转,是面向对象编程中的一种设计原则。主要是通过第三方loC容器,对Bean对象进行统一管理,及组织对象之间的依赖关系。获得依赖对象的过程,由原本程序自己控制,变为了loC容器来主动注入,控制权发生了反转,所以叫做loC,控制反转。

loC又叫做DI︰由于控制反转概念比较含糊(可能只是理解为容器控制对象这一个层面,很难让人想到谁来维护对象关系),相对loC而言,依赖注入实际上给出了实现loC的方法:注入。所谓依赖注入,就是由loC容器在运行期间,动态地将某种依赖关系注入到对象之中。

依赖注入(Dl)和控制反转(loC)是从不同的角度的描述的同一件事情,就是指通过引入loC容器,利用依赖关系注入的方式&

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值