java面试 dao模块_java基本框架面试题整理

本文详细介绍了Spring框架的核心模块及其在项目中的应用方式,并对比了Spring MVC与Struts2的区别,同时还探讨了Hibernate框架的使用及与MyBatis的区别。

Spring 面试回答:

什么是Spring框架,Spring有哪些核心木块

1.Spring 是个java企业级应用的开源开发框架。

Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。

2.七个核心模块

1。Spring WEB

MVC

MVC

框架是一个全功能的构建 Web 应用程序的 MVC 实现。

2

Spring WEB :

Web

上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程 序提供了上下文。所以,Spring 框架支持与 Struts2

的集成。

3

Spring ORM :

Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括

JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO

异常层次结构

4

Spring AOP:

通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring

框架中

5

Spring DAO:

JDBC

DAO 抽象层提供了有意义的异常层次结构,Spring DAO 的面向 JDBC 的异常遵从通用的 DAO

异常层次结构。

6

Spring Context:JEE

Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring

上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。

7

Spring Core :

核心容器提供 Spring 框架的基本功能。核心容器的主要组件是

BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转 (IOC)

模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。

spring 在项目中如何使用

1

spring对于程序开发人员来说是透明的

2

spring让三层架构之间降低耦合度。(低耦合 高内聚)

3

Aop 切面编程特性 帮我们处理事务和 日志?

Struts面试问题

Struts

中MVC的理解,以及Struts在web中的使用

M:

Model,模型,操作数据的业务处理层,并独立于表现层

V:

视图,通过客户端数据类型显示数据,并回显模型层的执行结果。

C:

控制器,也就是视图层和模型层桥梁,控制数据的流向,接受视图层发出的事件,并重绘视图

MVC的优点缺点

优点:

1)视图控制模型分离, 提高代码重用性。

2)提高开发效率。

3)便于后期维护, 降低维护成本。

4)方便多开发人员间的分工。

缺点:

1)清晰的构架以代码的复杂性为代价,

对小项目优可能反而降低开发效率。

2)运行效率相对较低

简单简述下struts2的执行流程

基本简要流程如下:

1、客户端浏览器发出HTTP请求。

2、根据web.xml配置,该请求被FilterDispatcher接收。

3、根据struts.xml配置,找到需要调用的Action类和方法,

并通过IoC方式,将值注入给Aciton。

4、Action调用业务逻辑组件处理业务逻辑,拦截器等这一步包含表单验证。

5、Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面。

6、返回HTTP响应到客户端浏览器。

为什么要使用struts框架

使用struts的原因:

JSP、Servlet、JavaBean技术的出现给我们构建强大的企业应用系统提供了可能。但用这些技术构建的系统非常的繁乱,所以在此之上,我们需要一个规则、一个把这些技术组织起来的规则,这就是框架,Struts便应运而生。

基于Struts开发的应用由3类组件构成:控制器组件、模型组件、视图组件。

Hibernate 框架的使用

Hibernate中get和load有什么不同之处?

1

load方式检索不到的话会抛出org.hibernate.ObjectNotFoundException异常

get方法检索不到的话会返回null,

2 get方法是直接从数据库中检索数据

而load方法的执行则比较复杂首先查找session缓存中找,如果有则直接返回

如果没有则判断是否是lazy如果不是直接访问数据库检索,查到记录返回,查不到抛出异常 。

Hibernate中save、persist和saveOrUpdate这三个方法的不同之处

save()只能INSERT记录,但是saveOrUpdate()可以进行

记录的INSERT和UPDATE。还有,save()的返回值是一个Serializable对象,而persist()方法返回值为void。

Hibernate 的优势

首先、Hibernate对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。

其次、Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现,它很大程度的简化了DAO层编码工作。

再次、Hibernate使用Java的反射机制,而不是字节码增强程序类实现透明性。

最后、Hibernate的性能非常好,因为它是一个轻量级框架。映射的灵活性很出色。它支持很多关系型数据库,从一对一到多对多的各种复杂关系。

Hibernate的工作原理:

1.读取并解析Hibernate核心配置文件hibernate.cfg.xml

2.读取并解析Hibernate映射文件,创建SessionFactory

3.打开Sesssion

4.创建事务Transation

5.持久化操作

6.提交事务

7.关闭Session

8.关闭SesstionFactory

mybatis和hibernate的区别

mybatis 1

需要人工编写sql语句

2 扩展性差 跟数据库耦合度较高 如果更换数据库 需要重新编写sql

3 开发效率

没有hibernate高 运行效率比hibernate高

hibernate 1 自动生成 并且提供了封装的常用接口 Query

SqlQuery

2 扩展性 好 跟数据库耦合度地 更换数据库 只需要更改方言 和主键生成策略

3 开发效率较高 运行效率低于myBiatis

hibernate 如何理解

1

轻量级jdbc

2

orm 对象关系映射

3

方言

4

逆向生成表

5

内置乐观锁

6

数据库优化

1

一二缓存

2

把复杂sql创建为视图 经常使用的查询列 创建 索引

3

把复杂的业务逻辑 通过函数和过程

4

连接池!!!

7

事务

JDBC

用于单一数据源 的一个事务处理

JTA 用于 多个数据源 分布式事务处理

SpringMVC 和Struts2 的区别

1:spring3 mvc开发效率高于struts

2:spring3 mvc可以认为已经100%零配置

3:struts2是类级别的拦截, 一个类对应一个request

请求,

springmvc是方法级别的拦截,一个方法对应一个request请求,而方法同时又跟一个url对应

所以说从架构本身上 spring3 mvc就容易实现

而struts2的架构实现起来要费劲

因为struts2 action的一个方法可以对应一个url

而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了

4:spring3mvc的方法之间基本上独立的,独享request

response数据

请求数据通过参数获取,处理结果通过ModelMap交回给框架

方法之间不共享变量

而struts2搞的就比较乱,虽然方法之间也是独立的,但其所有Action变量是共享的

这不会影响程序运行,却给我们编码

读程序时带来麻烦

5:由于Struts2需要针对每个Request进行封装,

把Request,Session等Servlet生命周期的变量封装成一个一个Map

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值