资源预览内容
第1页 / 共55页
第2页 / 共55页
第3页 / 共55页
第4页 / 共55页
第5页 / 共55页
第6页 / 共55页
第7页 / 共55页
第8页 / 共55页
第9页 / 共55页
第10页 / 共55页
亲,该文档总共55页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
轻量级 JavaEE 面试之三大框架1.Hibernate 工作原理及为什么要用?原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建 SessionFactory 3.打开 Session 4.创建事务 Transation 5.持久化操作 6.提交事务 7.关闭 Session 8.关闭 SesstionFactory 为什么要用: 1. 对 JDBC 访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。 2. Hibernate 是一个基于 JDBC 的主流持久化框架,是一个优秀的 ORM 实现。他很大程度的简化 DAO 层的编码工作 3. hibernate 使用 Java 反射机制,而不是字节码增强程序来实现透明性。 4. hibernate 的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。 2Hibernate 是如何延迟加载? 1. Hibernate2 延迟加载实现:a)实体对象 b)集合(Collection) 2. Hibernate3 提供了属性的延迟加载功能 当 Hibernate 在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。 3Hibernate 中怎样实现类之间的关系?(如:一对多、多对多的关系) 类与类之间的关系主要体现在表与表之间的关系进行操作,它们都是对对象进行操作,我们程序中把所有的表与类都映射在一起,它们通过配置文件中的 many-to-one、one-to-many、many-to-many 4.Struts1 流程:1、客户端浏览器发出 HTTP 请求。2、根据 web.xml 配置,该请求被 ActionServlet 接收。3、根据 struts-config.xml 配置, ActionServlet 先将请求中的参数填充到 ActionForm 中,然后 ActionServlet 再将请求发送到 Action 进行处理。4、是否验证,需要验证则调用ActionForm 的 validate 方法,验证失败则跳转到 input,成功则继续。5、Action 从ActionForm 获得数据,调用 javabean 中的业务方法处理数据。6、Action 返回ActionForward 对象,跳转到相应 JSP 页面或 Action。7、返回 HTTP 响应到客户端浏览器。MVC 设计模式:modal:“模型 ” 也称业务逻辑,是正真完成任务的代码,相当与JavaBeanview:视图,其实就是显示界面,相当于 JSPcontroller:控制器,他控制模型和视图的交互过程,相当于 servletstruts1 是基于 MVC 设计模式 hibernate 是基于 ORM 对象关系映射 5.struts 是什么?struts1 是基于 JSP 和 servlet 的一个开源的 Web 应用框架,使用的是 MVC 的设计模式struts2 是基于 webwork 技术的框架,是 sun 和 webwork 公司联手开发的一个功能非常齐全的框架,struts2 和 struts1 没有任何关系,是一个全新的框架 6.spring 是什么?spring 是一个集成了许多第三方框架的大杂烩,其核心技术是 IOC(控制反转,也称依赖注入)和 AOP(面向切面编程) 7.hibernate 是什么?hibernate 是基于 ORM 对象关系映射(完成对象数据到关系数据映射的机制)实现的,做数据持久化的工具 8.JSF 是什么?JavaServer Face 是基于组件的 web 开发框架,跟 sturts 差不多的框架 9.数据库里面的索引和约束是什么?索引是为了提高数据的检索速度,索引是建立在数据表上,根据一个或多个字段建立的约束是为了保持数据的完整性,约束有非空约束,主键约束,外键约束等等。10.spring 是什么这个问题,往往可以通过我们为什么要使用 spring 这个问题来切入:AOP 让开发人员可以创建非行为性的关注点,称为横切关注点,并将它们插入到应用程序代码中。使用 AOP 后,公共服务 (比 如日志、持久性、事务等)就可以分解成方面并应用到域对象上,同时不会增加域对象的对象模型的复杂性。 IOC 允许创建一个可以构造对象的应用环境,然后向这些对象传递它们的协作对象。正如单词 倒置 所表明的,IOC 就像反 过来的 JNDI。没有使用一堆抽象工厂、服务定位器、单元素(singleton)和直接构造(straight construction) ,每一个对象都是用其协作对象构造的。因此是由容器管理协作对象(collaborator) 。 Spring 即使一个 AOP 框架,也是一 IOC 容器。 Spring 最好的地方是它有助于您替换对象。有了 Spring,只要用 JavaBean 属性和配置文件加入依赖性(协作对象) 。然后可以很容易地在需要时替换具有类似接口的协作对象。 11.用自己的话简要阐述 struts2 的执行流程。Struts 2 框架本身大致可以分为 3 个部分:核心控制器 FilterDispatcher、业务控制器 Action和用户实现的企业业务逻辑组件。核心控制器 FilterDispatcher 是 Struts 2 框架的基础,包含了框架内部的控制流程和处理机制。业务控制器 Action 和业务逻辑组件是需要用户来自己实现的。用户在开发 Action 和业务逻辑组件的同时,还需要编写相关的配置文件,供核心控制器 FilterDispatcher 来使用。 Struts 2 的工作流程相对于 Struts 1 要简单,与 WebWork 框架基本相同,所以说 Struts 2 是WebWork 的升级版本。基本简要流程如下:1、客户端浏览器发出 HTTP 请求。2、根据web.xml 配置,该请求被 FilterDispatcher 接收。3、根据 struts.xml 配置,找到需要调用的Action 类和方法, 并通过 IoC 方式,将值注入给 Aciton。4、Action 调用业务逻辑组件处理业务逻辑,这一步包含表单验证。5、Action 执行完毕,根据 struts.xml 中的配置找到对应的返回结果 result,并跳转到相应页面。6、返回 HTTP 响应到客户端浏览器。1 Action 是不是线程安全的?如果不是 有什么方式可以保证 Action 的线程安全?如果是,说明原因 不是声明局部变量,或者扩展 RequestProcessor,让每次都创建一个 Action,或者在 spring 中用scope=prototype来管理美搜网(http:/www.msouw.com/), 邀请您的加入2.MVC,分析一下 struts 是如何实现 MVC 的 m:JavaBean 或结合 EJB 组件或者 pojo 构成 c:Action 来实现 v:一组 JSP 文件及其标签构成。3.struts 中的几个关键对象的作用 (说说几个关键对象的作用) Action:控制器类,ActionForm:表单对象,DynaValidatorForm:动态form,ActonMapping:配置文件中 action 节点的信息.4.说说 AOP 和 IOC 的概念以及在 spring 中是如何应用的 AOP:面向方面编程,ioc:依赖注入;声明式事务和编程式事务积极一些通用部分5.Hibernate 有哪几种查询数据的方式 hql 查询,sql 查询,条件查询6.load()和 get()的区别 hibernate 对于 load 方法认为该数据在数据库中一定存在,可以放心的使用代理来延迟加载,load 默认支持延迟加载,在用到对象中的其他属性数 据时才查询数据库,但是万一数据库中不存在该记录,只能抛异常 ObjectNotFoundEcception;所说的 load 方法抛异常是指在使用该对 象的数据时,数据库中不存在该数据时抛异常,而不是在创建这个对象时。由于session 中的缓存对于 hibernate 来说是个相当廉价的资源,所以在 load 时会先查一下session 缓存看看该 id 对应的对象是否存在,不存在则创建代理(load 时候之查询一级缓存,不存在则创建代理) 。get() 现在一级缓存找,没有就去二级缓存找,没有就去数据库找,没有就返回 null ;而对于 get 方法,hibernate 一定要获取到真实的数据,否则返回 null。7.谈谈 hibernate 的延迟加载和 openSessionInView 延迟加载要在 session 范围内,用到的时候再加载;opensessioninview 是在 web 层写了一个filter 来打开和关闭 session,这样就表示在一次 request 过程中 session 一直开着,保证了延迟加载在 session 中的这个前提。8.spring 的事务有几种方式?谈谈 spring 事务的隔离级别和传播行为。 声明事务和编程事务 隔离级别: - DEFAULT 使用数据库默认的隔离级别 - READ_UNCOMMITTED 会出现脏读,不可重复读和幻影读问题 - READ_COMMITTED 会出现重复读和幻影读 - REPEATABLE_READ 会出现幻影读 - SERIALIZABLE 最安全,但是代价最大,性能影响极其严重 和传播行: - REQUIRED 存在事务就融入该事务,不存在就创建事务 - SUPPORTS 存在事务就融入事务,不存在则不创建事务 - MANDATORY 存在事务则融入该事务,不存在,抛异常 - REQUIRES_NEW 总是创建新事务 - NOT_SUPPORTED 存在事务则挂起,一直执行非事务操作 - NEVER 总是执行非事务,如果当前存在事务则抛异常 - NESTED 嵌入式事务9.Hibernate 中的 update()和 saveOrUpdate()的区别. 摘自 hibernate 说明文档: saveOrUpdate()做下面的事: 如果对象已经在本 session 中持久化了,不做任何事 如果另一个与本 session 关联的对象拥有相同的持久化标识(identifier),抛出一个异常 如果对象没有持久化标识(identifier)属性,对其调用 save() 如果对象的持久标识(identifier)表明其是一个新实例化的对象,对其调用 save() 如果对象是附带版本信息的(通过 或 ) 并且版本属性的值表明其是一个新实例化的对象,save()它。 否则 update() 这个对象10.Spring 对多种 ORM 框架提供了很好的支持,简单描述在 Spring 中使用 Hibernate 的方法,并结合事务管理。 getHiberanteTemplate 里面提供了 save,update,delete,find 等方法。 简单说一个:如果配置了声明式事务,当执行 getHibernateTemplate 的各种方法的时候,事务会自动被加载 如果没有配置事务,那么以上操作不会真正的被同步到数据库,除非配置了 hibernate 的autocommit=true8.spring 的事务有几种方式?谈谈 spring 事务的隔离级别和传播行为。 spring 事务分两种形式,声明式事务和编程式事务,spring 提供了一个事务的接口PaltformTractionManager 接口,针对不同的事务,spring 进行了不同的实现,对 hibernate 事务的实现 HIbernateTracti
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号