非常有用的SSH框架面试题

上传人:笛音 文档编号:25872472 上传时间:2017-12-19 格式:DOC 页数:26 大小:190.50KB
返回 下载 相关 举报
非常有用的SSH框架面试题_第1页
第1页 / 共26页
非常有用的SSH框架面试题_第2页
第2页 / 共26页
非常有用的SSH框架面试题_第3页
第3页 / 共26页
非常有用的SSH框架面试题_第4页
第4页 / 共26页
非常有用的SSH框架面试题_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《非常有用的SSH框架面试题》由会员分享,可在线阅读,更多相关《非常有用的SSH框架面试题(26页珍藏版)》请在金锄头文库上搜索。

1、非常有用的 SSH 框架面试题Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建 SessionFactory 3.打开 Sesssion 4.创建事务 Transation 5.持久化操作 6.提交事务 7.关闭 Session 8.关闭 SesstionFactory 为什么要用: 1. 对 JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。 2. Hibernate是一个基于 JDBC的主流持久化框架,是一个优秀的 ORM实现。他很大程度的简化 DAO层的编码工作 3. hibernate使用 Java反射机制,而

2、不是字节码增强程序来实现透明性。 4. hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。 2 Hibernate 是如何延迟加载? 1. Hibernate2延迟加载实现:a)实体对象 b)集合(Collection) 2. Hibernate3 提供了属性的延迟加载功能 当 Hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。 3Hibernate 中怎样实现类之间的关系?(如:一对多、多对多

3、的关系) 类与类之间的关系主要体现在表与表之间的关系进行操作,它们都市对对象进行操作,我们程序中把所有的表与类都映射在一起,它们通过配置文件中的many-to-one、one-to-many、many-to-many、 4 说下 Hibernate的缓存机制 1. 内部缓存存在 Hibernate中又叫一级缓存,属于应用事物级缓存 2. 二级缓存: a) 应用及缓存 b) 分布式缓存 条件:数据不会被第三方修改、数据大小在可接受范围、数据更新频率低、同一数据被系统频繁使用、非 关键数据 c) 第三方缓存的实现 5 Hibernate 的查询方式 Sql、Criteria,object comp

4、tosition Hql: 1、 属性查询 2、 参数查询、命名参数查询 3、 关联查询 4、 分页查询 5、 统计函数 6 如何优化 Hibernate? 1.使用双向一对多关联,不使用单向一对多 2.灵活使用单向一对多关联 3.不用一对一,用多对一取代 4.配置对象缓存,不使用集合缓存 5.一对多集合使用 Bag,多对多集合使用 Set 6. 继承类使用显式多态 7. 表字段要少,表关联不要怕多,有二级缓存撑腰 7 Struts 工作机制?为什么要使用 Struts? 工作机制: Struts的工作流程: 在 web应用启动时就会加载初始化 ActionServlet,ActionServ

5、let从 struts-config.xml文件中读取配置信息,把它们存放到各种配置对象 当 ActionServlet接收到一个客户请求时,将执行如下流程. -(1)检索和用户请求匹配的 ActionMapping实例,如果不存在,就返回请求路径无效信息; -(2)如果 ActionForm实例不存在,就创建一个 ActionForm对象,把客户提交的表单数据保存到 ActionForm对象中; -(3)根据配置信息决定是否需要表单验证.如果需要验证,就调用 ActionForm的validate()方法; -(4)如果 ActionForm的 validate()方法返回 null或返回一

6、个不包含ActionMessage的 ActuibErrors对象, 就表示表单验证成功; -(5)ActionServlet根据 ActionMapping所包含的映射信息决定将请求转发给哪个 Action,如果相应的 Action 实例不存在,就先创建这个实例,然后调用 Action的 execute()方法; -(6)Action的 execute()方法返回一个 ActionForward对象,ActionServlet 在把客户请求转发给 ActionForward 对象指向的 JSP组件; -(7)ActionForward对象指向 JSP组件生成动态网页,返回给客户; 为什么要用

7、: JSP、Servlet、JavaBean 技术的出现给我们构建强大的企业应用系统提供了可能。但用这些技术构建的系统非常的繁乱,所以在此之上,我们需要一个规则、一个把这些技术组织起来的规则,这就是框架,Struts 便应运而生。 基于 Struts开发的应用由 3类组件构成:控制器组件、模型组件、视图组件 8 Struts 的 validate框架是如何验证的? 在 struts配置文件中配置具体的错误提示,再在 FormBean中的 validate()方法具体调用。 9 说下 Struts的设计模式 MVC模式: web 应用程序启动时就会加载并初始化 ActionServler。用户提

8、交表单时,一个配置好的 ActionForm对象被创建,并被填入表单相应的数据,ActionServler根据 Struts-config.xml文件配置好的设置决定是否需要表单验证,如果需要就调用 ActionForm的 Validate()验证后选择将请求发送到哪个Action,如果 Action不存在,ActionServlet 会先创建这个对象,然后调用Action的 execute()方法。Execute()从 ActionForm对象中获取数据,完成业务逻辑,返回一个 ActionForward对象,ActionServlet 再把客户请求转发给 ActionForward对象指定

9、的 jsp组件,ActionForward 对象指定的 jsp生成动态的网页,返回给客户。 10 spring 工作机制及为什么要用? 1.spring mvc请所有的请求都提交给 DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。 2.DispatcherServlet查询一个或多个 HandlerMapping,找到处理请求的Controller. 3.DispatcherServlet请请求提交到目标 Controller 4.Controller进行业务逻辑处理后,会返回一个 ModelAndView 5.Dispathcher查询一个或多

10、个 ViewResolver视图解析器,找到 ModelAndView对象指定的视图对象 6.视图对象负责渲染返回给客户端。 为什么用: AOP 让开发人员可以创建非行为性的关注点,称为横切关注点,并将它们插入到应用程序代码中。使用 AOP 后,公共服务 (比 如日志、持久性、事务等)就可以分解成方面并应用到域对象上,同时不会增加域对象的对象模型的复杂性。 IOC 允许创建一个可以构造对象的应用环境,然后向这些对象传递它们的协作对象。正如单词 倒置 所表明的,IOC 就像反 过来的 JNDI。没有使用一堆抽象工厂、服务定位器、单元素(singleton)和直接构造(straight const

11、ruction),每一个对象都是用其协作对象构造的。因此是由容器管理协作对象(collaborator)。 Spring即使一个 AOP框架,也是一 IOC容器。 Spring 最好的地方是它有助于您替换对象。有了 Spring,只要用 JavaBean 属性和配置文件加入依赖性(协作对象)。然后可以很容易地在需要时替换具有类似接口的协作对象。其它知识点:不会涉及到 2级缓存以及 hql 1. Configuration 读取 hibernate.cfg.xml.并把.hbm.xml 文件交给 HbmBinder做第一次处理, HbmBinder根据.hbm.xml 解析出 Persisten

12、tClass, Collection,然后在创建SessionFactory的时候,会对 Collection做第 2次处理塞入关联 2 PersistentClass 根据.hbm.xml 产生的描述要持久化的类的信息的类.主要的实例变量包括 List properties Property对象里的有个 Value属性 value,通过 value来描述该 property和 数据库里的哪些列对应以及获得该 property对应的 type 3 Value 主要分为 SimpleValue,Collection,Component,ToOne SimpleValue主要包括 Table和 C

13、olumns属性,用于描述简单属性或单主键 Collection主要属性包括 collectionTable表示 Collection里面 element对象所对应的 Table key表示 CollectionTable里的哪几列和 Collection owner所对应的表的主键做关联 element,描述了主表(referencingTable),从表的 EnityName,以及从表对应的PersistentClass Component可以用来描述多主键,通过属性 properties来表示 ToOne包括被引用的属性名,被引用的实体名,columns,(被引用的属性名不能 和 col

14、umns同时设置),用于 OneToOne,ManyToOne 4 SessionFactory 在创建 SessionFactory的时候,会根据 Configuration里 Classes和 Collections,创建 EntityPersister和 CollectionPersister. SessionFactory会缓存这些 persisters. EnityPersistenter的 key是 EntityName, CollectionPersister的 key是 entityName+propertyName 5 EntityPersister 分为 SingleTab

15、leEntityPersister(一个实体一个表/一个类继承结构一个表) 通过一个字段做标识 JoinedSubclassEntityPersister(每个子类一个表) UnionSubclassEntityPersister(每个具体类一个表) 6 CollectionPersister 封装对一个 Collection的 crud操作. 不过做 insert,update,delete,recreate的时候,会判 Inverse是否为 false.如果为 false才会执行相应的操作,表示是由 Collection维护关系. 如果 Inverse=true,表示关联关系是由多端来维护

16、(即直接通过操作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进行 nullSafeSet CollectionType没有实现 nullSafeSet,通过保存时的 Cascade或者 Colle

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 其它文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号