端阳提供非常有用的SSH框架面试题
JAVA ------SSH 面试题
JA V A ------SSH 面试题1. BeanFactory的作用是什么?[中] BeanFactory 是配置、创建、管理bean的容器,有时候也称为bean上下文。
Bean与bean的依赖关系,也是由BeanFactory负责维护的。
2. bean在spring的容器中两种基本行为是什么? [中] Singleton:单态Non-singleton或prototype:原型3. spring配置文件中的ref元素的作用是什么?它的两个基本属性是什么? [中] 用于指定属性值为spring容器中的其它bean.两个基本属性是bean和local4. 什么是DWR?它有哪些功能?[中] DWR(Direct Web Remoting)是一个WEB远程调用框架. 可以在客户端利用JavaScript直接调用服务端的Java方法并返回值给JavaScript DWR根据Java类来动态生成JavaScrip代码. 支持Dom Trees,支持Spring,支持commons-logging5. Ajax的工作原理?[难]在会话的开始,浏览器加载Ajax引擎请求动作通过JavaScript调用Ajax引擎来代替. 引擎负责绘制用户界面以及与服务器端通讯。
Ajax引擎采用异步交互过程--不用等待服务器的通讯。
6. XMLHttpRequest对象是什么,它有哪些常用方法?[难] 一个JavaScript 对象。
是Ajax 的核心。
该对象的方法和属性。
open():建立到服务器的新请求。
send():向服务器发送请求。
abort():退出当前请求。
readyState:提供当前HTML 的就绪状态。
responseText:服务器返回的请求响应文本。
. 7. XMLHttpRequest有哪些属性,它的值分代表什么?[ 中] 8. 什么是Ajax? [易] AJAX(Asynchronous JavaScript and XML),它不是一门新的语言或技术,而是多种技术的综合,包括:Javascript XHTML CSS DOM XML XSTL XMLHttpRequest 9. 同步与异步的区别?[ 难] 普通B/S模式(同步)AJAX技术(异步)同步:提交请求->等待服务器处理->处理完毕返回这个期间客户端浏览器不能干任何事,而异步则是请求通过事件触发->服务器处理->处理完毕同步是阻塞模式,异步是非阻塞模式。
ssh框架面试题
ssh框架面试题1. 什么是SSH框架?SSH框架是一种软件开发架构,由Struts、Spring和Hibernate三个开源框架共同组成。
框架的名字来源于Struts与Spring的首字母和Hibernate的音译。
•Struts是一个MVC框架,用于处理Web页面的请求和响应。
•Spring是一个IoC容器和AOP框架,用于管理各种组件的创建和依赖注入。
•Hibernate是一个ORM框架,用于处理对象与数据库的映射关系。
SSH框架的优势在于它们能够相互补充,提供全面的解决方案,简化开发流程,提高开发效率。
2. SSH框架的特点有哪些?SSH框架具有以下特点:(1) 分层架构SSH框架采用分层架构,将整个软件系统划分为多个层次,包括表示层、业务逻辑层和数据访问层。
这种架构可以提高代码的可维护性和复用性,使系统更加灵活和易于扩展。
(2) 基于约定的编程SSH框架采用一些默认约定来简化开发过程。
例如,Struts框架默认会将请求参数自动绑定到Action的属性上,Spring框架默认使用注解扫描来管理Bean的创建和依赖注入,Hibernate框架默认使用映射文件来处理对象与数据库表之间的映射关系。
(3) 松耦合设计SSH框架通过依赖注入和面向接口编程等方式实现松耦合设计。
Struts和Spring框架使用依赖注入将不同组件之间解耦,而Hibernate框架使用接口和抽象类来定义通用的数据库操作API,降低了代码的耦合性,提高了软件的可维护性和可测试性。
(4) 强大的功能扩展性SSH框架提供了丰富的插件和扩展点,可以根据项目的需求进行灵活的功能扩展。
例如,Struts框架可以通过自定义拦截器来处理一些通用的功能,Spring框架可以通过编写切面来实现横切关注点的处理,Hibernate框架可以通过自定义的事件监听器来处理对象与数据库的操作。
(5) 成熟的社区支持SSH框架是开源软件,拥有庞大而活跃的社区,提供了大量的文档、教程和示例代码,开发者可以通过社区获取帮助和解决问题。
ssh 面试题
ssh 面试题SSH 是一种网络协议,用于通过一个安全信道连接到远程服务器。
它由 Secure Shell(安全外壳协议)、Secure File Transfer Protocol(安全文件传输协议)和X11远程连接协议组成。
在面试过程中,关于SSH的问题常常被提出,以下是一些常见的SSH面试题及其答案。
1. 什么是SSH?SSH是一种网络协议,用于通过一个安全信道连接到远程服务器。
它提供了对远程计算机的加密认证和安全访问,使得数据传输过程中不容易受到中间人攻击、密码抓取和IP欺骗等威胁。
2. SSH有哪些主要的优点?- 安全性:SSH使用加密算法来保护数据传输过程中的机密性和完整性。
- 认证:SSH支持多种身份验证方法,如密码、公钥和基于证书的身份验证等。
- 端口转发:SSH可以通过端口转发功能,将本地计算机上的应用程序安全地连接到远程服务器上。
- X11转发:通过SSH,可以在远程计算机上运行图形应用程序,并将界面传输到本地计算机进行显示。
- 无需额外的插件或软件:大多数操作系统都内置了SSH客户端和服务器,无需安装额外的软件。
3. SSH连接和登录的过程是什么样的?在SSH连接和登录的过程中,以下是基本的步骤:- 客户端向服务器发起连接请求。
- 服务器回应并提供自己的身份认证信息,包括公钥。
- 客户端验证服务器的身份,检查公钥是否可信。
- 如果服务器验证通过,客户端生成一个随机的密码,然后使用服务器的公钥对密码进行加密,并将其发送给服务器。
- 服务器使用自己的私钥解密密码,并验证是否正确。
- 如果密码验证通过,服务器将让客户端登录到远程计算机。
4. 如何使用公钥与私钥进行身份验证?使用公钥与私钥进行身份验证可以提供更高的安全性。
以下是基本的身份验证过程:- 客户端生成一对密钥:公钥和私钥。
- 客户端将公钥安装到服务器上的用户帐户目录下的`authorized_keys`文件中。
- 在连接过程中,服务器将使用公钥进行加密的方式向客户端发送一条挑战信息。
专题5_SSH口试模拟-answer
1、谈谈你对Struts的理解。
答:1. struts是一个按MVC模式设计的Web层框架,其实它就是一个大大的servlet,这个Servlet名为ActionServlet,或是ActionServlet的子类。
我们可以在web.xml文件中将符合某种特征的所有请求交给这个Servlet处理,这个Servlet再参照一个配置文件(通常为/WEB-INF/struts-config.xml)将各个请求分别分配给不同的action去处理。
2.action执行完后要返回显示的结果视图,这个结果视图是用一个ActionForward对象来表示的,actionforward对象通过struts-config.xml配置文件中的配置关联到某个jsp页面,因为程序中使用的是在struts-config.xml配置文件为jsp页面设置的逻辑名,这样可以实现action程序代码与返回的jsp页面名称的解耦。
也可直接说Struts的执行流程(MVC)的流程;MVC工作的基本流程a.客户端发请求,请求交给前端控制器处理b.前端控制器维护一个XML配置文件(XML定义了请求和Action之间的对应关系)c.前端控制根据请求调用相应的Action组件,执行请求处理d.Action处理完毕,可以将处理结果存放到Requeste.控制器调用相应的视图JSP,进行响应处理4)Struts框架封装了上述主要流程和结构2、谈谈你对Hibernate的理解。
答:1. 面向对象设计的软件内部运行过程可以理解成就是在不断创建各种新对象、建立对象之间的关系,调用对象的方法来改变各个对象的状态和对象消亡的过程,不管程序运行的过程和操作怎么样,本质上都是要得到一个结果,程序上一个时刻和下一个时刻的运行结果的差异就表现在内存中的对象状态发生了变化。
2.为了在关机和内存空间不够的状况下,保持程序的运行状态,需要将内存中的对象状态保存到持久化设备和从持久化设备中恢复出对象的状态,通常都是保存到关系数据库来保存大量对象信息。
SSH面试题
13.Spring的Aop。
Aop:面向切面编程 Aspet oriented program 理解Aop 主要要理解下列几方面1 横切关注点:程序中需要 AOP处理的地方2 切面:多个切入点的封装3 通知:横切关注点的实现通常有前置后置环绕,异常4 连接点通知的放置点 sping 只支持方法5 切入点用一个表达式指出连接点的范围6 proxy Aop 框架实现的对象用来实现切面契约7 目标对象应用切面的那个对象8 织入将通知应用到切入点的过程14.Struts中的Action有几种。
常用的有1普通 Action 2 SwicthAction 3 IncultAction 4FowordAction 5 DispatchAction6MappingDispatchAction15.Hibernate的HQL语句与SQl语句的性能问题。
HQL 相对与SQl语句性能方面要更好些。
应为HQL支持一系列对于性能优化的技术例如,延迟加载。
缓存技术。
批量抓取策略等,但是要是对于HQL查询机制的不了解,也可能您的配制性能会大大的低于Sql16 spring的工作机制?Spring 主要作用2个方面,ADI 与 AOPADI 通过注入的方式生成和管理各对象以及对象间的关系Aop 主用来处理声明式事务处理,就是在应用系统中编织一个事务切面17 spring的事务?1声明式事务主要由 Aop 技术实现的声明式事务,对于需要大量事务处理的系统适合采用此中方式他不同与 EJB 中声明式事务处理,他是非侵入式的,可以应用到任意java 类2 编程式事务处理适用用于少量事务代码的程序 spring 提供了2种实现使用 TransactionTemplate 直接使用一个 PlatformTransactionManager 实现18.hibernate二级缓存有什么优缺点?hibernate二级缓存相当与一及缓存他的作用区域更大,不随session 关闭而关闭,只与sessioFatroy 相关,可以自己配制那些对象使用二级缓存这样就更加灵活主要缺点是配制相对复杂,而且配制不适当的话,可能会大大降低系统性能19.ireport会用么?Ireport jsp报表设计器20.你的日志记录怎么实现的?一般采用 Aptch的 comman-logging + dom4j来处理21. 为什么用AspectJ,不用spring中的aop AspectJ 支持AspectJ 比spring中的aop AspectJ 提供多了一中属性的切入,当需要用到这种需求时就选用AspectJ21. sping中事务的隔离级别1 ISOLATION_DEFAULT2 ISOLATION _READ_UNCOMMITTED3 ISOLATION _ READ_ COMMITTED4 ISOLAT ION _REPEATABLE_READ5 ISOLATION _SERIALIZABLE22.怎么理解IOC,写出在Spring中怎么配置IOCIOC 控制反转主要有2种技术实现1 DI 依耐注入 spring 采用此种方式2 JNDI 依耐查找Spring 中配制Ioc 主要有2种方式一个就是 set方法注入一个就是构造方法注入还有一中接口的注入因为是破坏式的所以不常用23对O/R mapping的理解,是个怎么样的架构通过采用描述对象与数据库之间的应射原数据将java对象自动持久划到数据库中,本质就是将数据从一种形式转换成另外一种形式的过程24 struts中的DispathAction有什么用处解决 struts 框架应用中 Action 泛滥的问题,将相关的业务 Action 封装到同一个 DispathAction 中,通过不同的Method 区分25 struts配置文件中input属性的作用 Input 表示此action 在出现未扑获的Exception 时将要跳转到的路径26 Struts中Action和ActionForm验证错误在JSP中怎么显示1.可以通过 <bean:errors> 标签显示,我们通常也是这么做的2.还可以同过 message 标签现实 Globle.Error_key 的数据,因为struts 框架就是将错误信息存储在这 27 Hibernate中many-to-one怎么配置 <many-to-one name=”属性名” column=”列名” class=”关联的对象类名”/>28 STRUTS工作流程,STRUTS有几种FORM表单1 页面提交 .do 请求到服务器,Struts 核心过滤器 ActionServlet 拦截到请求,先截取请求路径,通过从 structs_config.xml 中加载的配置信息,找到path为刚才路径的 action 同时在查询,该action 中是否配置了 name 信息,配置了name 信息就将页面数据收集到相关的actionForm 中,然后执行刚才找到的Action 方法的 Exceut 方法,最后通过刚才返回的 ActionForwd 对象查找到页面需跳转的地址,将结果返回到客户端2 form 常用的有以下几种ActionForm ValidataActionForm ValidataFormDynaActionForm DynaValidataActionForm DynaValidataForm 29 Hibernate实体与实体关系,hibernate的主键生成方式实体间的关系分为 1对1关系 1对多关系多对1关系多对多关系hibernate的主键常用的生成方式有 assigned foreign identity increment hilo sequence uuid 还有些不是很常用,同时当这些不满足我们的要求时,也可以自己实现主键生成方式30 Hibernate的排序方式,怎样实现1.在HQL 语句中加入 order by 字句就可以解决问题2 在集合映射中可以加入 sort=””来解决集合中排序问题,sort 中允许的值包括unsorted,natural和某个实现Comparator 的类的名称。
ssh 面试题
ssh 面试题SSH面试题1. 什么是SSH?SSH(Secure Shell)是一种安全的网络协议,用于通过不安全的网络建立安全的远程连接。
它提供了加密的通信通道,以保护数据在客户端和服务器之间的传输安全。
2. SSH有哪些组成部分?SSH由三个主要组成部分构成:SSH客户端、SSH服务器和SSH协议。
2.1 SSH客户端:用于建立SSH连接的软件/工具。
它通常是用户在本地计算机上运行的程序,用于连接到远程SSH服务器。
2.2 SSH服务器:接受来自SSH客户端的连接请求,并提供远程访问和管理功能。
SSH服务器通常运行在远程计算机上。
2.3 SSH协议:规定了SSH客户端和服务器之间通信的规范。
它定义了加密算法、认证过程和数据传输方式等。
3. SSH的工作原理是什么?SSH使用公开密钥加密技术来确保通信信道的安全。
其工作原理如下:3.1 客户端发起连接请求:SSH客户端向SSH服务器发送连接请求。
3.2 服务器认证:服务器收到连接请求后,会发送一个公钥给客户端进行服务器身份认证。
3.3 用户认证:客户端使用本地的私钥对服务器发送的公钥进行加密,然后发送给服务器进行用户身份认证。
3.4 建立加密通道:身份认证成功后,客户端和服务器使用协商好的加密算法建立加密通道。
这样,所有通过该通道传输的数据都将被加密。
3.5 数据传输:客户端和服务器之间可以通过已建立的加密通道进行数据传输。
传输的数据将在客户端和服务器之间进行加密和解密。
4. SSH的优点有哪些?4.1 安全性:SSH提供了加密通信通道,可以保护数据在传输过程中的安全性,防止被窃听或篡改。
4.2 认证:SSH采用公钥加密认证方式,仅信任具有授权的用户能够访问服务器。
4.3 远程访问:通过SSH,用户可以远程访问服务器,执行命令、上传文件等操作,方便进行远程管理和维护。
4.4 端口转发:SSH支持端口转发功能,可以将本地端口和远程端口进行映射,实现本地和远程网络资源的访问。
SSH框架面试题(自己+别人的试题)
(问答题+选择题(在55页))Java工程师(程序员)面题Struts,Spring,Hibernate三大框架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的性能非常好,因为它是个轻量级框架。
映射的灵活性很出色。
它支持各种关系数据库,从一对一到多对多的各种复杂关系。
2.Hibernate是如何延迟加载?1. Hibernate2延迟加载实现:a)实体对象b)集合(Collection)2. Hibernate3 提供了属性的延迟加载功能当Hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。
3.Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系)类与类之间的关系主要体现在表与表之间的关系进行操作,它们都是对对象进行操作,我们程序中把所有的表与类都映射在一起,它们通过配置文件中的many-to-one、one-to-many、many-to-many4.Struts1流程:1、客户端浏览器发出HTTP请求。
2、根据web.xml配置,该请求被ActionServlet接收。
3、根据struts-config.xml配置,ActionServlet先将请求中的参数填充到ActionForm中,然后ActionServlet再将请求发送到Action 进行处理。
SSH面试
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?由于添加和删除和更新全部涉及到数据库的修改,而查询并为涉及数据修改,所以只要定义只读,这样能增加效率,进行更加方便的事物管理。
SSH考试题目面试题目
SSH考试题考试题目:简易奥运门票销售管理系统考试方式:机试,考试完毕需提交完整的工程文件考试时间:4小时一、语言和环境J2EE要求使用技术点:Struts、Hibernate、Spring环境要求:Eclipse3.2、Oracle 9i三、试题现需要开发一个简易的奥运门票销售管理系统,请学员参照数据库设计及界面原型完成。
请学员将OlympicGames数据库附加到Sql Server 2000中,作为本简易门票销售管理系统的数据库。
总分(100分)(一)门票管理(分值:55分)1、查看门票销售情况:参考原型页面TicketSearch.htm (25分)i.将所有的门票信息展示到表格中,体育场馆显示为中文场馆名(10分)ii.允许用户新增、修改门票信息,分别链接到TickAdd.htm和TicketModify.htm。
(5分)iii.允许用户删除门票信息,删除直接在本页面操作。
(10分)实现要求:NET:销售情况的数据用GridView控件显示J2EE:使用ForEach标签实现数据的迭代显示2、新增门票:参考原型页面TicketAdd.htm(15分)i.比赛名称不允许为空(需验证),比赛场地绑定体育场馆表TB_Stadia中内容;(5分)ii.比赛开始时间为日期类型(需验证),价格为数字类型(需验证);(5分)iii.【提交】按钮保存输入的门票信息到数据库中,【重置】按钮将页面输入重置为初始值;(5分)3、修改门票:参考原型页面TicketModify.htm(15分)i.要求同新增门票(二)订票管理(总分35分)1.订票信息查询页面: 参考原型页面OrderSearch.htm(20分)ii.将所有的订票信息显示到表格中。
(10分)iii.允许用户删除订票信息,即某个用户取消预订,删除直接在本页面操作。
提示:删除订票信息,奥运门票表TB_Tickets表中OrderCount字段值应减1(10分)2.新增订票信息: 参考原型界面OrderAdd.htm(15分)iv.比赛门票绑定奥运门票表TB_Tickets中内容,身份证号码不能为空(需验证)(5分)v.【提交】按钮保存输入的订票信息到数据库中,【重置】按钮将页面输入重置为初始值;提示:提交时,应判断门票剩余情况,如果本场比赛无剩余门票,则新增不成功。
ssh框架面试题整理汇编
1.Struts工作机制?为什么要使用Struts?一工作原理上图来源于Struts2官方站点,是Struts 2 的整体结构。
在Struts2框架中的处理大概分为以下几个步骤1)客户端初始化一个指向Servlet容器(例如Tomcat)的请求2)这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin)3)接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action4)如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy5)ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类6)ActionProxy创建一个ActionInvocation的实例。
7)ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。
8)一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。
返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。
在表示的过程中可以使用Struts2 框架中继承的标签。
在这个过程中需要涉及到ActionMapper二工作流程工作机制:1)客户端浏览器发出HTTP请求.2)根据web.xml配置,该请求被FilterDispatcher接收3)根据struts.xml配置,找到需要调用的Action类和方法,并通过IoC方式,将值注入给Aciton4)Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。
ssh相关面试题_ssh面试题
ssh相关面试题_ssh面试题ssh相关面试题篇1什么是Spring, 它有什么特点Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
◆轻量——从大小与开销两方面而言Spring都是轻量的。
完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。
并且Spring 所需的处理开销也是微不足道的。
此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。
◆控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。
当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。
你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。
◆面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务()管理)进行内聚性的开发。
应用对象只实现它们应该做的——完成业务逻辑——仅此而已。
它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。
◆容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。
然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。
◆框架——Spring可以将简单的组件配置、组合成为复杂的应用。
在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。
Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。
ssh相关面试题篇21、spring 的优点?1.降低了组件之间的耦合性,实现了软件各层之间的解耦2.可以使用容易提供的众多服务,如事务管理,消息服务等3.容器提供单例模式支持4.容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能5.容器提供了众多的辅助类,能加快应用的开发6.spring对于主流的应用框架提供了集成支持,如hibernate,JPA,Struts等7.spring属于低侵入式设计,代码的污染极低8.独立于各种应用服务器9.spring的DI机制降低了业务对象替换的复杂性10.Spring的高度开放性,并不强制应用完全依赖于Spring,开发者可以自由选择spring的部分或全部2、什么是DI机制?依赖注入(Dependecy Injection)和控制反转(Inversion of Control)是同一个概念,具体的讲:当某个角色需要另外一个角色协助的时候,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。
SSH集成开发面试问题
SSH集成开发面试问题2.在strust中,村签与标签有什么分别3.Hibernate中标签如何实现乐观并发控制的4.简要说明Hibernate中,Hibernate.jdbc.fetch.seze和Hibernate.jdbc.batch.seze有什么用途5.简要说明在B/S架构中,如何实现刷新动态更新页面数据的方法与相关技术答案如下:问题提得比较实用:1、struts处理中文乱码,比较好的方式是在struts-config.xml 中配置controller : 而他的processorClass是一个servlet,这个servlet覆盖init方法,在其中保留super.init();然后引入中文编码,即request.setCharacterEncoding( gbk )2、在strust中,村签与标签有什么分别:标签扩展了包括标签,当然也扩展了和标签;他们的重要区别在于提供了“嵌套支持”。
(嵌套就不详细说明了)3、Hibernate中标签如何实现乐观并发控制的:即所谓的乐观锁机制,他有好几种实现方式,是其中一种:通过为数据增加一个版本标志即version,读取数据时一同读出该数据的版本,更新数据时对数据的版本加1,在提交数据时与数据库中的相应数据进行比较,若版本号大于数据库中的版本号则认为是新数据,更新数据库中的数据;如果小于数据库中的号则认为是过期数据。
(这一部分建议楼主详细看下hibernate的锁机制)4、应该是Hibernate.jdbc.fetch.size 和Hibernate.jdbc.batch.size的用途:fetch.size 是设定JDBC的Statement每次从数据库中读取数据时候取出的记录条数。
(这个设置将影响hibernate的性能,要结合多方面考虑,一般建议在50到100之间)。
batch.size设置对数据库进行批量操作时的记录大小,如批量插入记录、批量删除记录。
java 面试题 ssh
java 面试题 ssh1. 引言Java是一种跨平台的编程语言,被广泛应用于软件开发领域。
在面试中,SSH(Struts+Spring+Hibernate)是一个常见的话题,因为SSH 是JavaWeb开发的主要框架之一。
本文将回答一些关于Java面试中的SSH问题。
2. 什么是SSH框架?SSH框架是一种将Struts、Spring和Hibernate整合在一起的开发框架。
Struts是一个基于MVC模式的Web应用程序框架,它提供了控制器组件来处理用户请求。
Spring是一个轻量级的应用程序框架,它提供了依赖注入和面向切面编程的功能。
Hibernate是一个开源的对象关系映射框架,用于将Java对象映射到关系数据库中。
3. SSH框架的优势是什么?使用SSH框架可以带来许多好处,包括:- 分离关注点:通过MVC模式,将应用程序的逻辑、展示和数据访问分离,使得代码更加清晰易维护。
- 降低开发难度:Spring提供了依赖注入功能,使得开发人员可以更轻松地管理组件之间的依赖关系。
- 提高开发效率:Hibernate提供了面向对象的数据库访问,简化了数据库操作的过程。
- 提高代码质量:框架提供了一系列的最佳实践和规范,有助于开发人员编写高质量的代码。
4. 如何整合SSH框架?整合SSH框架的步骤如下:- 配置Struts:创建Action类和配置文件,处理用户请求和展示逻辑。
- 配置Spring:在Spring配置文件中定义Bean对象和依赖注入关系,管理组件之间的依赖关系。
- 配置Hibernate:在Hibernate配置文件中配置数据库连接信息和映射关系,实现对数据库的访问。
5. SSH框架中的数据流是怎样的?在SSH框架中,数据流可以简化为以下几个步骤:1) 用户发送请求到Struts的控制器。
2) 控制器将请求传递给Spring的Bean对象。
3) Bean对象调用Hibernate进行数据库操作。
SSH面试题 赢时胜
SSH面试题赢时胜问题:SSH面试题赢时胜回答:一.HIbernate 的工作原理是什么 1.通过Configuration().configure()读取并解析hibernate.cfg.xml配置文件 2.由hibernate,cfg.xml中的读取解析映射关系 3.通过config.buildSessionFactory()创建sessionFactory4.sessionFactory.openSession()打开Session5.session.beginTransaction 创建事物Transaction6.persistent operate 持久化操作7.session.getTransaction().commit() 提交事物8.关闭session 和sessionFactory二.struts的设计模式,struts的对象及作用MVC模式(Model-View-Controller 模型-视图-控制器)Struts主要担当了控制器的作用Actionform,ActionMapping:ActionError,Validatorform三.update()和saveorupdate()的区别,update() 更新,没有主键会报错saverOrUpdate() 保存或者更新,没有主键就执行插入。
四.overload与override的区别Overload:重载|- 在一个类中定义的若干方法|- 所有的方法名相同,但参数类型或个数不同|- 只有参数有关,与返回类型无关Override:覆写|- 在继承的关系中|- 子类定义了父类同名的方法,参数类型或个数最好完全一样。
|- 访问权限不能更严格五.接口和抽象类的区别抽象类可以有构造方法,接口中不能有构造方法。
抽象类中可以有普通成员变量,接口中没有普通成员变量接口里边全部方法都必须是abstract的抽象类的可以有实现了的方法抽象类中的抽象方法的访问类型可以是public,protected 但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型抽象类中可以包含静态方法,接口中不能包含静态方法抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
java ssh 面试题
java ssh 面试题Java SSH面试题一、简介SSH(Spring+SpringMVC+Hibernate)是一种常用的Java Web开发框架,被广泛应用于企业级Web应用开发。
在面试中,面试官常常会提问与SSH框架相关的问题。
本文将介绍一些常见的Java SSH面试题及其答案,以帮助准备面试的Java开发人员更好地应对这些问题。
二、常见问题与解答1. 什么是SSH框架?答:SSH框架是由Spring、SpringMVC和Hibernate三个框架组合而成的一种Java Web开发框架。
Spring作为一个轻量级的IoC容器和AOP框架,负责管理Java对象的生命周期和实现面向切面编程。
SpringMVC作为一个基于MVC模式的Web框架,负责请求的分发和处理。
Hibernate作为一个ORM(Object-Relational Mapping)框架,负责将Java对象与数据库中的数据进行映射和交互。
2. SSH框架的优点是什么?答:SSH框架有以下几个优点:- 高度可配置:SSH框架提供了灵活的配置选项,可以根据具体需求进行定制。
- 松耦合:各个组件之间的耦合度较低,开发人员可以针对不同的组件进行独立开发和维护。
- 强大的功能支持:Spring、SpringMVC和Hibernate都是成熟且功能强大的框架,提供了丰富的特性和扩展性。
- 易于测试:SSH框架采用了依赖注入和面向接口编程等技术,使得代码更易于测试和调试。
- 与Java EE标准兼容:SSH框架可以与Java EE标准技术集成,如JSP、Servlet、JPA等。
3. Spring的核心功能是什么?答:Spring的核心功能包括:- IoC容器:负责管理和控制对象的生命周期,通过依赖注入(Dependency Injection)将对象之间的依赖关系交给容器管理。
- AOP框架:通过面向切面编程(Aspect-Oriented Programming),在不修改源代码的情况下,实现对目标对象的增强功能,如日志记录、事务处理等。
ssh面试内容
如果当时是我的话我会这么回答:(首先假定你是应聘CODER,而不是MANAGER)问你用什么开发?你得反问他开发什么?不然开发C/S 你也用SSH?我可能会说,没有特定的技术,适合什么就用什么,如果他问这个适合的技术你没接触过怎么办?我相信既然分配到我做这个了,说明我还是能完成的,而且很多技术都相通的,原理大多一样,只是各个实现不一样罢了,这时你可以举个列子,比如持久层,如果你是会hibernate,而项目正好适合用ibatis做,你可以说,这些ORM框架都是相通的,无非是对JDBC的SQL操作的封装而已,只有给我一定时间,相信能在给定的时间内尽快上手再看看你的回答,你说是用ssh,既然你都这么说了,说明你很是精通这三个了,我是面试官的话一定会对你穷追猛打问这三个框架,如果面试官又恰好也精通这三个,你就祈祷吧! struts,他说没有web层,你也就不要争了,你可以这么解释,struts主要是用在view层,也就是视图层,主要把数据渲染给视图的,当然渲染的视图不一定是jsp,如果你恰好又懂几个模版的话,你也可以随便说下。
然后你还可以说说struts的一些好处和作用,我就不多介绍了,比如数据转换啊,数据验证啊~~一大堆了 hibernate 什么时候要用到持久?汗你别回答把这个概念哈把数据持久到数据库这是他的概念,他是问你什么时候用如果我可能这么回答当需要存储一些重要数据的时候的,比如一些客户的资料,商业数据``等等 10万量访问IP 这个其实你看看一些架够师的文章可以简单说点点我就不在着上面多说了 ssh缺点汗估计他也会这么问你三年内主要用ssh开发,缺点应该了如指掌吧。
我用的不多但也知道一些你回答一句可能hibernate生成的sql比较多,会慢一些不是间接体现你hibernate用的不熟么,不自信么你可以说每种技术都有自己的优点和缺点相对来说 ssh的优点非常明显的,至于它们有什么缺点,你也可以说你一直用的非常熟练还没有发现他们什么比较大的缺点回答的时候一定要自信,你可是用了三年的ssh的,除非你是吹的或者他也很精通,那你就完了不过你要是自信一点也可能唬住他另外你没必要说一定说ssh 比如你可以说 view层基于mvc模式,通过action调用业务逻辑获取数据显示到view层,view层用了什么模版渲染这里可以体现出了你的mvc思想持久层,把数据存储到数据库或者其他介质里,一般情况下,可以采用现在比较火的orm 框架,比如hibernate(个人比较爱说基于hibernate的JPA实现),ibatis,如果对数据有特殊要求的话,可以自己封装JDBC,这里可以体现出你理解了orm的本质,也就是对jdbc的封装,如果sql比较牛,对数据库体系结构也了解的话,你可以说下如果针对特殊的sql或者数据库进行优化~等等不多说了spring 本质无非就是ioc,什么是ioc,控制反转,这些概念就不解释了我用到现在觉得它的好处确实太多了封装了事务,能帮助管理各种bean,提供了很多非常棒的服务,与EJB 的强制性提供各种服务相比,spring提供的服务都是可插拔式的,即轻量级的不多说了写了这么多手都类了----------------------------------------------------------------------------------------------------------------------1.说说你对MVC的理解上面的一层是直接面向最终用户的视图层View,它是提供给用户的操作界面,是程序的外壳。
SSH框架测试试卷
三、单项选择(每小题 分,共 分). ✞设计模式的目的是( )✌:使程序结构更清晰:使程序更好维护:保证视图和模型的隔离:在逻辑上将视图、模型和控制器分开.以下关于 ☟框架说法正确的是( )✌: ♦❒◆♦♦属于 ♏♌层,负责处理业务逻辑:☟♓♌♏❒⏹♋♦♏属于 业务层,可以对数据库进行操作: ☐❒♓⏹♑属于持久层,是对 ✞设计模式的实现:以上说法都不对.以下选项,不在 ♦❒◆♦♦的配置文件中配置的是( )✌:☞☐❒❍ ♏♋⏹配置信息:✌♍♦♓☐⏹转发路径:✌♍♦♓☐⏹♏❒❖●♏♦配置信息: ♦❒◆♦♦引用的资源文件.下面关于 ♦❒◆♦♦报错机制说法正确的是(✌)✌:强制使用国际化:错误信息保存在♦♏♦♦♓☐⏹中:使用 ♒♦❍●♏⌧♍♏☐♦♓☐⏹标签显示错误信息:也可以使用 ♒♦❍●❍♏♦♦♋♑♏♦显示错误信息.在三层结构中,数据访问层承担的责任是( )✌:定义实体类:数据的增删改查操作:业务逻辑的描述:页面展示和控制转发.下面关于☟♓♌♏❒⏹♋♦♏的说法,错误的是( )✌:☟♓♌♏❒⏹♋♦♏是一个“对象—关系映射”的实现:☟♓♌♏❒⏹♋♦♏是一种数据持久化技术:☟♓♌♏❒⏹♋♦♏是☺ 的替代技术:使用☟♓♌♏❒⏹♋♦♏可以简化持久化层的编码.在☟♓♌♏❒⏹♋♦♏关系映射配置中,♓⏹❖♏❒♦♏属性的含义是( )✌:定义在 ☐⏹♏♦☐❍♋⏹⍓节点上,声明要负责关联的维护 :声明在 ♦♏♦节点上,声明要对方负责关联的维护:定义在 ☐⏹♏♦☐❍♋⏹⍓节点上,声明对方要负责关联的维护 :声明在 ♦♏♦节点上,声明要负责关联的维护.关于 ☐❒♓⏹♑的说法错误的是( )✌:通过♦♏♦♦♏❒方法实现依赖注入:对☟♓♌♏❒⏹♋♦♏提供了支持,可简化☟♓♌♏❒⏹♋♦♏编码:通过✌可以轻松与☟♓♌♏❒⏹♋♦♏集成:通过✌实现了声明式事务管理.关于 ☐❒♓⏹♑ ✌,下面说法错误的是( )✌:支持前置通知、后置通知、环绕通知:采用代理的方式实现:与“依赖注入”实现紧密结合:在 ☐❒♓⏹♑以前的版本中通过 ♋☐☐♍☐⏹♐♓♑、 ♋☐☐☐☐♓⏹♦♍◆♦和 ♋☐☐♋♎❖♓♦☐❒配置.下面关于“依赖注入”的说法,错误的是(✌)✌:需要定义大量接口,增加了编码复杂度:将组件间的依赖关系采取配置文件的方式管理,而不是硬编码在代码中 :降低了组件间的耦合,使程序更容易维护和升级:促进了“面向接口”编程,使构建大规模程序更轻松四、简单题(每小题 分,共 分).简述♦♦❒◆♦♦的工作原理 .什么是 ✍它主要解决什么问题?.简述 ☐❒♓⏹♑的原理和优点?。
SSH框架部分常见面试题
最新资料,word文档,可以自由编辑!!精品文档下载【本页是封面,下载后可以删除!】Struts2部分1.什么是MVC?说出几种常见的MVC框架。
mvc是设计模式,M=model模型 v=view 视图,c=control逻辑控制层。
MVC框架:struts2和spring2.为什么说Struts2.x是轻量级的而Struts1.x是重量级的。
Struts2可以卸载,而struts1不能卸载3.简述创建Struts2 Action的三种方式。
(1)在action类中创建execute()方法,返回字符串;(2)Action类实现action接口,实现execute()方法(3)Action类继承ActionSupport,重写execute()方法。
4.简述Struts2.x接收表单数据的三种方式?(1)a ction中的表单与jsp中表单数据名一样即可(2)a ction中private entity类,有get和set方法使用lei.表单数据名就可以获得表单数据。
(3)a ction实现modledriver<T>领域模型在action 类中变量:Entity类要初始化,重写getModel()方法。
---常用5.简述Struts2 Action的生命周期。
每次运行都会产生一个新的action.6.简述 Struts2 Action访问web内置对象的四种方式?(1):创建request,session,application Map对象(2):实现RequestAware,SessionAware,ApplicationAware接口(IOC)(3):创建传统的HttpServletRequest, HttpSession, ServletContext对象。
(4):实现ServletRequestAware 、ServletContextAware接口。
(IOC)7.说出四种常见的result类型?Dispatcher:跳转到URL,通常是JSP(服务器)Redirect:重定向到URL,通常是JSP(客户端)Chain:跳转到一个Action(服务器)redirectAction:重定向到一个Action(客户端8.什么是i18n?什么是l10n?I18n是国际化:internationalizationI10n是本地化:localization9.比较拦截器与过滤器的区别?拦截器:过滤器:10.简述Struts2值栈技术的特点。
企业面试题总结(SSH框架技术运用).
Struts1+Struts2+Spring+Hibernate+iBatis一.Struts1.谈谈你mvc的理解MVC是Model—View—Controler的简称。
即模型—视图—控制器。
MVC是一种设计模式,它强制性的把应用程序的输入、处理和输出分开。
MVC中的模型、视图、控制器它们分别担负着不同的任务。
视图: 视图是用户看到并与之交互的界面。
视图向用户显示相关的数据,并接受用户的输入。
视图不进行任何业务逻辑处理。
模型: 模型表示业务数据和业务处理。
相当于JavaBean。
一个模型能为多个视图提供数据。
这提高了应用程序的重用性控制器: 当用户单击Web页面中的提交按钮时,控制器接受请求并调用相应的模型去处理请求。
然后根据处理的结果调用相应的视图来显示处理的结果。
MVC的处理过程:首先控制器接受用户的请求,调用相应的模型来进行业务处理,并返回数据给控制器。
控制器调用相应的视图来显示处理的结果。
并通过视图呈现给用户。
2.struts1.2和struts2.0的区别?如何控制两种框架中的单例模式?struts1.2和struts2.0的对比a、Action类:struts1.2要求Action类继承一个基类。
struts2.0 Action要求继承ActionSupport基类b、线程模式struts1.2 Action是单例模式的并且必须是线程安全的,因为仅有一个Action的实例来处理所有的请求。
单例策略限制了Struts1.2 Action能做的事情,并且开发时特别小心。
Action资源必须是线程安全的或同步的。
struts2.0 Action为每一个请求产生一个实例,因此没有线程安全问题。
c、Servlet依赖struts1.2 Action依赖于Servlet API,因为当一个Action被调用时HttpServletRequest 和HttpServletResponse被传递给execut方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ibatis就是灵活,说白了就是比Hibernate好学。
搞不是很大型,对数据库操作不是太繁复的时候采用ibatis也不错。
它和Hibernate区别就在于自己要写完整sql语句。
非常有用的SSH框架面试题Hibernate工作原理及为什么要用?原理:1.读取并解析配置文件2.读取并解析映射信息,创建SessionFactory3.打开Sesssion4.创建事务Transation5.持久化操作6.提交事务7.关闭Session8.关闭SesstionFactory为什么要用:1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。
他很大程度的简化DAO层的编码工作3. hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。
4. hibernate的性能非常好,因为它是个轻量级框架。
映射的灵活性很出色。
它支持各种关系数据库,从一对一到多对多的各种复杂关系。
2. Hibernate是如何延迟加载?1. Hibernate2延迟加载实现:a)实体对象 b)集合(Collection)2. Hibernate3 提供了属性的延迟加载功能当Hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。
3.Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系)类与类之间的关系主要体现在表与表之间的关系进行操作,它们都市对对象进行操作,我们程序中把所有的表与类都映射在一起,它们通过配置文件中的many-to-one、one-to-many、many-to-many、4.说下Hibernate的缓存机制1. 内部缓存存在Hibernate中又叫一级缓存,属于应用事物级缓存2. 二级缓存:a) 应用及缓存b) 分布式缓存条件:数据不会被第三方修改、数据大小在可接受范围、数据更新频率低、同一数据被系统频繁使用、非关键数据c) 第三方缓存的实现5. Hibernate的查询方式Sql、Criteria,object comptositionHql:1、属性查询2、参数查询、命名参数查询3、关联查询4、分页查询5、统计函数6.如何优化Hibernate?1.使用双向一对多关联,不使用单向一对多2.灵活使用单向一对多关联3.不用一对一,用多对一取代4.配置对象缓存,不使用集合缓存5.一对多集合使用Bag,多对多集合使用Set6. 继承类使用显式多态7. 表字段要少,表关联不要怕多,有二级缓存撑腰7. Struts工作机制?为什么要使用Struts?工作机制:Struts的工作流程:在web应用启动时就会加载初始化ActionServlet,ActionServlet从struts-config.xml文件中读取配置信息,把它们存放到各种配置对象当ActionServlet接收到一个客户请求时,将执行如下流程.-(1)检索和用户请求匹配的ActionMapping实例,如果不存在,就返回请求路径无效信息;-(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中;-(3)根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm的validate()方法;-(4)如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActuibErrors对象, 就表示表单验证成功;-(5)ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给哪个Action,如果相应的 Action实例不存在,就先创建这个实例,然后调用Action的execute()方法;-(6)Action的execute()方法返回一个ActionForward对象,ActionServlet在把客户请求转发给 ActionForward对象指向的JSP组件;-(7)ActionForward对象指向JSP组件生成动态网页,返回给客户;为什么要用:JSP、Servlet、JavaBean技术的出现给我们构建强大的企业应用系统提供了可能。
但用这些技术构建的系统非常的繁乱,所以在此之上,我们需要一个规则、一个把这些技术组织起来的规则,这就是框架,Struts便应运而生。
基于Struts开发的应用由3类组件构成:控制器组件、模型组件、视图组件8. Struts的validate框架是如何验证的?在struts配置文件中配置具体的错误提示,再在FormBean中的validate()方法具体调用。
9.说下Struts的设计模式MVC模式: web应用程序启动时就会加载并初始化ActionServler。
用户提交表单时,一个配置好的ActionForm对象被创建,并被填入表单相应的数据,ActionServler 根据Struts-config.xml文件配置好的设置决定是否需要表单验证,如果需要就调用ActionForm的Validate()验证后选择将请求发送到哪个Action,如果Action 不存在,ActionServlet会先创建这个对象,然后调用Action的execute()方法。
Execute()从ActionForm对象中获取数据,完成业务逻辑,返回一个ActionForward 对象,ActionServlet再把客户请求转发给ActionForward对象指定的jsp组件,ActionForward对象指定的jsp生成动态的网页,返回给客户。
10. spring工作机制及为什么要用?1.spring mvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。
2.DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller.3.DispatcherServlet请请求提交到目标Controller4.Controller进行业务逻辑处理后,会返回一个ModelAndView5.Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象6.视图对象负责渲染返回给客户端。
为什么用:{AOP 让开发人员可以创建非行为性的关注点,称为横切关注点,并将它们插入到应用程序代码中。
使用 AOP 后,公共服务(比如日志、持久性、事务等)就可以分解成方面并应用到域对象上,同时不会增加域对象的对象模型的复杂性。
IOC 允许创建一个可以构造对象的应用环境,然后向这些对象传递它们的协作对象。
正如单词倒置所表明的,IOC 就像反过来的 JNDI。
没有使用一堆抽象工厂、服务定位器、单元素(singleton)和直接构造(straight construction),每一个对象都是用其协作对象构造的。
因此是由容器管理协作对象(collaborator)。
Spring即使一个AOP框架,也是一IOC容器。
Spring 最好的地方是它有助于您替换对象。
有了 Spring,只要用 JavaBean 属性和配置文件加入依赖性(协作对象)。
然后可以很容易地在需要时替换具有类似接口的协作对象。
}其它知识点:不会涉及到2级缓存以及hql1. Configuration读取hibernate.cfg.xml.并把.hbm.xml文件交给HbmBinder做第一次处理, HbmBinder根据.hbm.xml解析出PersistentClass, Collection,然后在创建SessionFactory的时候,会对Collection做第2次处理塞入关联2 PersistentClass根据.hbm.xml产生的描述要持久化的类的信息的类.主要的实例变量包括List<Property> propertiesProperty对象里的有个Value属性value,通过value来描述该property和数据库里的哪些列对应以及获得该property对应的type3 Value主要分为SimpleValue,Collection,Component,ToOneSimpleValue主要包括Table和Columns属性,用于描述简单属性或单主键Collection主要属性包括collectionTable表示Collection里面element对象所对应的Tablekey表示CollectionTable里的哪几列和Collection owner所对应的表的主键做关联element,描述了主表(referencingTable),从表的EnityName,以及从表对应的PersistentClassComponent可以用来描述多主键,通过属性properties来表示ToOne包括被引用的属性名,被引用的实体名,columns,(被引用的属性名不能和columns同时设置),用于OneToOne,ManyToOne4 SessionFactory在创建SessionFactory的时候,会根据Configuration里Classes和Collections,创建EntityPersister和CollectionPersister.SessionFactory会缓存这些persisters.EnityPersistenter的key是EntityName,CollectionPersister的key是entityName+propertyName5 EntityPersister分为SingleTableEntityPersister(一个实体一个表/一个类继承结构一个表)通过一个字段做标识JoinedSubclassEntityPersister(每个子类一个表) UnionSubclassEntityPersister(每个具体类一个表)6 CollectionPersister封装对一个Collection的crud操作.不过做insert,update,delete,recreate的时候,会判Inverse是否为false.如果为false才会执行相应的操作,表示是由Collection维护关系.如果Inverse==true,表示关联关系是由多端来维护(即直接通过操作Collection里的element来维护,而不是通过操作Collection来维护)则该CollectionPersister不会做任何操作7 Type主要包括对SqlTypes的封装,以及CollectionType,EntityType (ManyToOneType,OneToOneType),主要接口有nullSafeGet(从ResultSet拼装出对象),nullSafeSet(给PreparedStatement setParameter).可以通过Value.getType()获得Type对于EntityType,CollectionType,就是通过resolve方法从ResultSet中拼装出对象EntityType的nullSafeSet,就是获取One端对象的主键所对应的Type进行nullSafeSetCollectionType没有实现nullSafeSet,通过保存时的Cascade或者CollectionPersister,将Collection的Element一个一个的set也可以自定义Type,实现UserType接口具体见/framework/hibernate/reference-v3_zh-cn/inheritan ce.html封装对一个entity的crud操作,在创建EntityPersister实例过程中,会产生crud的sql,可以在以后的操作提高效率。