1-1:为什么每次请求都要创建一个Action对象?
为了防止线程迸发,如果每次都使用同一个Action进行数据修改和传递的话,容易引起线程迸发,使线程不安全。
1-2:ModelDriven拦截器的配置中refreshModelBeforeResult解决了什么问题?
在数据输出之前将数据接收的Bean里面的数据清空。解决了数据混淆的可能性。
1-3:为什么在web.xml中配置的StrutsPrepareAndExecuteFilter要过滤所有的请求?
为了1.可以将数据进行过滤
2.可以进行数据的转码将数据进行统一的编码
1-2:请你给我谈谈ValueStack?
堆值,堆里面的值。
1-5:Struts2是如何实现MVC设计模式的?
在Struts2里面是将每次页面的请求进行处理,然后将请求需要输出的数据转发的需要做数据显示的页面,Struts2只是起一个数据接受和转接的功能,就是Controler控制器,而传来数据的页面叫View显示层,Struts2将数据提交给进行处理的类叫Model模型层,专门进行数据处理和数据库的链接。
2-1:你为什么要用Spring?
使用Spring 1.主要将各个框架进行有效的联系起来,缩短实际编程的时间,起一个润滑剂的作用。
2.可以将各个框架进行有效的管理和控制,让数据传输中安全。
2-2:请你聊一聊IOC/DI?
依赖注入和控制反转Spring的两大基础作用
主要是将所有组件在Spring提供的外部容器中加载,提高安全性,减低耦合性,使各个框架或者类之间的依赖性降低。
2-3:什么是声明式的事务管理?为什么要使用声明式的事务管理?Spring如何实现声明式的事务管理?
声明事物管理主要是将在进行对数据库中数据进行添加或者修改的时候需要执行事物管理。主要是避免在执行数据修改和添加的时候数据添加或者修改不完全,导致数据丢失。
Spring是使用AOP面向切面的思想进行事物管理的。
2-4:把spring和hibernate集成,定义事务管理特性的时候,为何要将除了添加、删除、更新操作之外的方法,即主要执行 查询任务的方法定义为read-only?
因为添加和删除和更新都涉及到数据库的修改,而查询并为涉及数据修改,所以只需要定义只读,这样可以提高效率,进行更加方便的事物管理。而事物管理主要是为添加和删除和更新设计的。
3-1:请你谈谈你对OR映射的理解?
将数据库里面的每一张表都映射成一个实体。
3-2:很多人说Hibernate不适合大项目,性能有问题,你是如何理解的?
因为Hibernate属于大型框架,里面对许多方法的封装比较多,让SQL控制权降低。这样的话,适用性就会降低,在不必要的操作上会浪费时间。但是只要将Hibernate里的配置进行优化,也能提高其性能。
3-3:Hibernate为什么一定要定义一个数据库标识?
可以让映射文件变得简洁,消除无用的噪音(比如TBL_前缀等)。Hibernate使用的默认策略是几乎什么都不做,所以使用标识的作用就是使数据操作更加简洁和方便
3-4:为什么Hibernate建议你的实体类实现hashCode和equals方法?
因为Hibernate使用了一级和二级缓存,很多查询为了提高效率Hibernate都会先从缓存中进行查找,然后再从数据库进行查找。而HashCode是唯一的,所以这样避免数据操作出现数据混淆的可能,而equals的作用是对比Hibernate缓存中数据是否一致。
3-5:谈谈你对Hibernate实体类中的数据库标识与数据库主键之间关系的认识?
数据库标识是为了方便和简洁映射文件,而主键是为了使数据不会重复。
3-6:谈谈你对Hibernate关联映射与数据库外键之间关系的认识?
Hibernate在进行映射的时候会将数据库的关系也进行映射将数据库中的外键也使用标签的形式进行管理,这样在人为操作的时候就不需要手动的管理数据库关系了。
3-7:调用session.save()方法,hibernate一定会发出insert语句吗?谈谈你的理解
不会,具体执行步骤如下:
1. 首先在Session内部缓存中进行查找,如果发现则直接返回。
2. 执行实体类对应的Interceptor.isUnsaved方法(如果有的话),判断对象是否为未保存状态。
3. 根据unsaved-value判断对象是否处于未保存状态。
4. 如果对象未保存(Transient状态),则调用save方法保存对象。
5. 如果对象未已保存(Detached状态),则调用update方法将对象与Session重新关联。 。
3-8:调用session.update()方法,hibernate一定会发出update语句吗?谈谈你的理解
理解同上
3-9:请你聊一下以下名词、概念或用法:lazy、lazy=”extra”、inverse、fetch、fetch=”join”、fetch=”subselect”、batch-size
lazy懒,lazy=“extra”extra属性是不大容易重视的,其实它和true差不多,但有个小的智能的地方是,即调用集合的size/contains等方法的时候,hibernate并不会去加载整个集合的数据,而是发出一条聪明的SQL语句,以便获得需要的值,只有在真正需要用到这些集合元素对象数据的时候,才去发出查询语句加载所有对象的数据
inverse控制翻转,主要是为了让谁去维护关系,一般是在主表中配置,将维护关系的只能交给主键。
fetch取来,fetch="join"主要是在查询的时候Hibernate会自动查询有关联的表。fetch="join",hibernate会通过select语句使用外连接来加载其关联实体或集合,此时lazy会失效
fetch="subselect",另外发送一条select语句抓取在前面查询到的所有实体对象的关联集合
batch-size配置这个属性是让Hibernate在执行批量的数据库操作
3-10:配置了lazy=”true”一定会实现懒加载吗?
不一定,因为如果再配置中你也使用fetch属性的话此时lazy就会失效
3-11:请你谈谈Hibernate中的“N+1”问题
主要是如果再一般的查询时,如果需要查询很多次,就需要像数据库发送很多条SQL语句,而且,会返回很多个结果,而Hibernate中使用N+1策略时执行Criteria时,会将自动进行SQL构造,并且映射到实体Bean中,就只会返回一个结果,这样不仅提高了性能,而且在处理返回值的时候也变得比较轻松。
3-12:请你谈谈Hibernate有哪些最佳实践?
数据库建模,ORM是Hibernate中比较经典。
此回答只凭本人经验和学习。提供借鉴
转:http://zhidao.baidu.com/question/255434112.html
分享到:
相关推荐
ssh 框架 ssh 框架 ssh 框架 ssh 框架 ssh 框架 ssh 框架 ssh 框架 ssh 框架 ssh 框架 ssh 框架 ssh 框架 ssh 框架 ssh 框架 ssh 框架 ssh 框架 ssh 框架 ssh 框架 ssh 框架 ssh 框架 ssh 框架 ssh 框架 ssh 框架 ...
ssh ssh shhs ssh ssh shhs ssh ssh shhs ssh ssh shhs ssh ssh shhs ssh ssh shhs ssh ssh shhs ssh ssh shhs ssh ssh shhs ssh ssh shhs ssh ssh shhs ssh ssh shhs ssh ssh shhs ssh ssh shhs ssh ssh shhs ssh ...
SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。这个压缩包文件"SSHdemo"提供了一个...配合提供的博客地址,可以获取更详细的步骤解释和问题解答,加深对SSH框架的理解。
8. **实战经验**:在实际项目中,开发者需要关注性能优化、事务管理、异常处理等问题,这都需要对SSH框架有深入的理解。例如,合理使用Spring的AOP进行事务管理,避免Struts的性能瓶颈,以及优化Hibernate的查询性能...
SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。这个“ssh框架纯净版”包含了这三个框架的基础组件和相关代码,旨在提供一个简洁、无多余依赖的开发环境。 1. **...
eclipse插件生成ssh框架和ssi框架
SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。这个项目源码提供了SSH整合的实践案例,特别适合初学者学习和理解Web应用的开发流程。 Struts2作为MVC(Model-View-...
SSH框架,全称为Spring、Struts和Hibernate,是Java Web开发中的一个经典组合,用于构建高效、可维护的Web应用程序。这些框架各自负责不同的职责,Spring作为基础架构框架,Struts处理视图与控制,Hibernate则专注于...
SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大框架。这三大框架分别负责表现层、业务层和持久层的管理,为开发者提供了高效、灵活且可扩展的开发环境。在Java Web项目中,SSH框架的...
ssh框架搭建及实例ssh框架 ssh框架搭建及实例ssh框架
【标题】"基于SSH框架的系统"是一种常见的企业级应用开发模式,SSH分别代表Spring、Struts和Hibernate三个开源框架的首字母缩写。Spring作为核心的IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented ...
SSH框架整合是Java Web开发中常见的一种技术栈组合,它由Spring、Struts2和Hibernate三个框架构成。这个"SSH框架整合jar包"是开发者为了方便项目构建,避免手动逐个添加和配置这三个框架所需的库文件而制作的集合。...
SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架。它们分别负责表现层、业务层和服务层的管理,为开发者提供了强大的功能和灵活的架构。本压缩包提供了搭建SSH环境所需的核心...
SSH框架是Java开发中常用的三大框架,包括Struts2、Spring和Hibernate,它们协同工作,为Web应用程序提供了模型-视图-控制器(MVC)架构的支持。这些框架各自有着独特的功能,结合使用能够极大地提高开发效率和代码...
SSH框架,全称为Spring、Struts和Hibernate的首字母缩写,是Java开发中的一个经典组合,用于构建企业级Web应用程序。Spring提供了依赖注入(DI)和...如果你有更多关于SSH框架的问题,可以通过提供的博文链接深入学习。
SSH框架在IT行业中指的是Spring、Struts和Hibernate这三个开源框架的组合,它们是Java Web开发中的常用工具。淘宝网站作为中国最大的电商平台,其后端架构很可能就采用了SSH框架来构建,以实现高效、稳定和可扩展的...
SSH框架是JavaEE领域中一种广泛使用的企业级开发框架,它由Struts、Spring和Hibernate三个开源框架整合而成。这个框架组合通过各自不同的功能和特点,使得Java Web应用程序的开发更加便捷高效。 Struts框架是一个...
【SSH框架详解】 SSH框架是Java Web开发中的一个经典组合,由Spring、Struts和Hibernate三个开源框架集成,常用于构建企业级应用。...通过分析和实践,不仅可以掌握SSH框架的精髓,还能提高解决实际问题的能力。
SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常用的一套集成框架。这个框架集合了MVC(Model-View-Controller)设计模式的Struts2,依赖注入和面向切面编程的Spring,以及持久层管理的...
SSH框架整合教程是Java开发领域中的一个重要主题,它涉及到三个核心的开源框架:Struts、Spring和Hibernate。这些框架在企业级应用开发中扮演着关键角色,分别负责表现层、业务逻辑层和数据持久化层的管理。 Struts...