`
zpball
  • 浏览: 917066 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts,Hibernate,Spring面试题(2)

阅读更多

hibernate
1.在数据库中条件查询速度很慢的时候,如何优化?
(1).建索引
(2).减少表之间的关联
(3).优化sql,尽量让sql很快定位数据,不要让sql做全表查询,应该走索引,把数据量大的表排在前面
(4).简化查询字段,没用的字段不要,已经对返回结果的控制,尽量返回少量数据

2.在hibernate中进行多表查询,每个表中各取几个字段,也就是说查询出来的结果集并没有一个实体类与之对应,如何解决这个问题?
解决方案一,按照Object[]数据取出数据,然后自己组bean
解决方案二,对每个表的bean写构造函数,比如表一要查出field1,field2两个字段,那么有一个构造函数就是Bean(type1 filed1,type2 field2) ,然后在hql里面就可以直接生成这个bean了。具体怎么用请看相关文档,我说的不是很清楚。

hibernate的核心类是什么,它们的相互关系是什么?重要的方法是什么?

Configuration 接口:配置Hibernate,根据其启动hibernate,创建
SessionFactory 对象;
SessionFactory 接口:初始化Hibernate,充当数据存储源的代理,创建
session 对象,sessionFactory 是线程安全的,意味着它的同一个实例可以被应
用的多个线程共享,是重量级、二级缓存;
Session 接口:负责保存、更新、删除、加载和查询对象,是线程不安全的,
避免多个线程共享同一个session,是轻量级、一级缓存;
Transaction 接口:管理事务;
Query 和Criteria 接口:执行数据库的查询。

Session如下方法
   Save/ load/Update/Delete/get/saveOrUpdate/deleteAll
         Query q=CreateQuery(“from Customer where customerName=:customerName”)
   beginTransaction
   close
   Transaction
   Commit()


优化hibernate性能的几点建议
1、针对oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100。Oracle数据库的JDBC驱动默认的Fetch Size=15,设置Fetch Size设置为:30、50,性能会有明显提升,如果继续增大,超出100,性能提升不明显,反而会消耗内存。

即在hibernate配制文件中进行配制:


1 <property name=”hibernateProperties”>   
2 <props>   
3 <prop key=”hibernate.dialect”>org.hibernate.dialect.Oracle9Dialect</prop>   
4 <prop key=”hibernate.show_sql”>false</prop>   
5 <!– Create/update the database tables automatically when the JVM starts up   
6 <prop key=”hibernate.hbm2ddl.auto”>update</prop> –>   
7 <!– Turn batching off for better error messages under PostgreSQL   
8 <prop key=”hibernate.jdbc.batch_size”>100</prop> –>   
9 <prop key=”hibernate.jdbc.batch_size”>50</prop>   
10 </props>  

1 <property name=”hibernateProperties”>
2 <props>
3 <prop key=”hibernate.dialect”>org.hibernate.dialect.Oracle9Dialect</prop>
4 <prop key=”hibernate.show_sql”>false</prop>
5 <!– Create/update the database tables automatically when the JVM starts up
6 <prop key=”hibernate.hbm2ddl.auto”>update</prop> –>
7 <!– Turn batching off for better error messages under PostgreSQL
8 <prop key=”hibernate.jdbc.batch_size”>100</prop> –>
9 <prop key=”hibernate.jdbc.batch_size”>50</prop>
10 </props>
</property>


Fetch Size设的越大,读数据库的次数越少,速度越快;Fetch Size越小,读数据库的次数越多,速度越慢。
2、如果是超大的系统,建议生成htm文件。加快页面提升速度。

3、不要把所有的责任推在hibernate上,对代码进行重构,减少对数据库的操作,尽量避免在数据库查询时使用in操作,以及避免递归查询操作,代码质量、系统设计的合理性决定系统性能的高低。

4、 对大数据量查询时,慎用list()或者iterator()返回查询结果,

(1). 使用List()返回结果时,Hibernate会所有查询结果初始化为持久化对象,结果集较大时,会占用很多的处理时间。

(2). 而使用iterator()返回结果时,在每次调用iterator.next()返回对象并使用对象时,Hibernate才调用查询将对应的对象初始化,对于大数据量时,每调用一次查询都会花费较多的时间。当结果集较大,但是含有较大量相同的数据,或者结果集不是全部都会使用时,使用iterator()才有优势。

5、在一对多、多对一的关系中,使用延迟加载机制,会使不少的对象在使用时方会初始化,这样可使得节省内存空间以及减少数据库的负荷,而且若PO中的集合没有被使用时,就可减少互数据库的交互从而减少处理时间。

6、对含有关联的PO(持久化对象)时,若default-cascade=”all”或者 “save-update”,新增PO时,请注意对PO中的集合的赋值操作,因为有可能使得多执行一次update操作。

7、 对于大数据量新增、修改、删除操作或者是对大数据量的查询,与数据库的交互次数是决定处理时间的最重要因素,减少交互的次数是提升效率的最好途径,所以在开发过程中,请将show_sql设置为true,深入了解Hibernate的处理过程,尝试不同的方式,可以使得效率提升。尽可能对每个页面的显示,对数据库的操作减少到100—-150条以内。越少越好。


一组Struts的选择测试题附答案
(1)在Struts应用的视图中包含哪些组件?(多选)
选项:
(A) JSP
(B) Servlet
(C) ActionServlet
(D) Action
(E) 代表业务逻辑或业务数据的JavaBean
(F) EJB
(G) 客户化标签

(2)在Struts应用的控制器中包含哪些组件?(多选)
选项:
(A) JSP
(B) Servlet
(C) ActionServlet
(D) Action
(E)代表业务逻辑或业务数据的JavaBean
(F) EJB
(G) 客户化标签

(3)在Struts应用的模型中包含哪些组件?(多选)
选项:
(A) JSP
(B) Servlet
(C) ActionServlet
(D) Action
(E)代表业务逻辑或业务数据的JavaBean
(F) EJB
(G) 客户化标签

(4)以下代码定义了一个变量,如何输出这个变量的值?(多选)
<bean:define id=\”stringBean\” value=“helloWorld“/>
选项:
(A)<bean:write name=“stringBean\”/>
(B) <bean:write name=“helloWorld\”/>
(C)<%= stringBean%>
(D)
<% String myBean=
(String)pageContext.getAttribute(“stringBean”,PageContext.PAGE_SCOPE);
%>
<%=myBean%>

(5)把静态文本放在Resource Bundle中,而不是直接在JSP文件中包含这些静态文本,有什么优点?(多选)
A)提高可维护性
B)提高可重用性
C)支持国际化
D)提高运行速度

(6)以下哪些说法是正确的?(单选)
选项:
(A)每个HTTP请求对应一个单独的ActionServlet实例
(B)对于每个请求访问HelloAction的HTTP请求,Struts框架会创建一个单独的HelloAction实例。
(C)每个子应用对应一个单独的RequestProcessor实例
(D)每个子应用对应一个单独的web.xml文件

(7)下面哪些任务是RequestProcessor完成的?(多选)
选项:
(A)把Struts配置文件信息加载到内存中
(B)把资源文件信息读入到内存中
(C)如果需要的话,创建ActionForm实例,组装数据,并进行表单验证
(D)找到匹配的Action实例,调用其execute()方法
(E)把请求转发到Action的execute()方法返回的ActionForward代表的组件。

(8)对于以下代码,HelloAction希望把请求转发给hello.jsp,在HelloAction的execute()方法中如何实现?(多选)
<action    path      = \”/HelloWorld\”
type      = \”hello.HelloAction\”
name     = \”HelloForm\”
scope     = \”request\”
validate   = \”true\”
input     = \”/hello.jsp\”
>
<forward name=\”SayHello\” path=\”/hello.jsp\” />
</action>

选项:
(A) return (new ActionForward(mapping.getInput()));
(B) return (mapping.findForward(\”SayHello\”));
(C) return (mapping.findForward(“hello.jsp\”));

(9)对于以下这段配置ActionServlet的代码,哪些说法是正确的?(多选)
<servlet> 
<servlet-name>action</servlet-name> 
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class> 
<init-param> 
<param-name>config</param-name> 
<param-value>/WEB-INF/myconfig.xml</param-value> 
</init-param> 
<load-on-startup>2</load-on-startup> 
</servlet> 

<!– Standard Action Servlet Mapping –> 
<servlet-mapping> 
<servlet-name>action</servlet-name> 
<url-pattern>*.do</url-pattern> 
</servlet-mapping> 


选项:
(A)Servlet容器在启动Struts应用时,会初始化这个ActionServlet。
(B) 对于所有URL中以”.do”结尾的HTTP请求,都由ActionServlet处理。
(C) 这段代码位于struts-config.xml中。
(D)这段代码位于web.xml中。

(10) 问答题:MVC是什么含义?

答案:
(1)A,G (2)B,C,D  (3)E,F  (4)A,D  (5)A,B,C  (6)C  (7)C,D,E  (8)A,B  (9)A,B,D
(10)M表示Model(模型),V表示View(视图),C表示Controller(控制器)
分享到:
评论

相关推荐

    struts hibernate spring 面试题大全

    Struts、Hibernate和Spring是Java开发中非常重要的三个框架,它们在企业级应用开发中扮演着核心角色。这里我们将深入探讨这三个框架以及相关的面试题,帮助你更好地理解和准备相关面试。 1. **Struts框架** Struts...

    2023年StrutsHibernateSpring经典面试题收藏.doc

    2023年StrutsHibernateSpring经典面试题收藏.doc

    Struts,Spring,Hibernate三大框架的面试&笔试题

    5. Struts与Spring的区别:Struts1基于JSP和Servlet,Struts2基于Webwork,两者都是MVC框架但技术栈不同。 6. Spring的核心特性:IOC和AOP,以及它们在应用中的作用。 7. JSF(JavaServer Faces):与Struts类似的...

    Struts+Hibernate+Spring面试题合集及答案常见题目经典精选汇总大全.docx

    这些面试题涵盖了Hibernate、Struts和Spring的主要概念、工作原理和最佳实践,深入理解和掌握这些知识点对于Java开发者来说至关重要。在实际面试中,除了基础理论知识,面试官还会关注开发者在项目中如何应用这些...

    spring、Struts2、hibernate常见面试题

    Spring、Struts2、Hibernate面试题详解 本文将详细解释 Spring、Struts2、Hibernate 面试题中的知识点,涵盖了 MVC 模式、Struts1.2 和 Struts2.0 的区别、单例模式、Servlet 依赖、可测试性、项目中使用 SSH 的...

    SSH(struts+spring+hibernate)面试题总结

    以下是对SSH面试题中涉及的一些核心知识点的详细解释: 1. **Hibernate 工作原理** Hibernate 的工作流程主要包括: - 读取`hibernate.cfg.xml`配置文件,创建`Configuration`实例,加载类映射信息。 - `...

    最新Struts和Hibernate和Spring经典面试题

    Struts、Hibernate 和 Spring 经典面试题 以下是对 Struts、Hibernate 和 Spring 的经典面试题的总结,涵盖了这些框架的工作机制、优点、缓存机制、查询方式、优化方法等知识点。 Hibernate 1. Hibernate 工作...

    spring struts hibernate面试题

    【Spring Struts Hibernate面试题详解】 在面试中,关于SSH(Spring、Struts、Hibernate)的知识点通常是Java Web开发人员必须掌握的核心内容。下面将详细解释这些技术的关键特性和应用场景。 1. **MVC设计模式** ...

    java struts hibernate spring 全面面试题

    包含java方向的所有面试题目内容: java jsp servlet ,javabean spring hibernate struts ejb等内容...这些都是我找了综合的..因为今天我也要找工作!祝大家好运

    Struts Spring Hibernate面试题汇总

    【SSH面试题汇总】主要涉及的是Struts、Spring和Hibernate这三个流行Java EE框架的相关知识,以及MVC设计模式的理解。MVC(Model-View-Controller)模式是软件工程中的一种架构模式,它将应用程序分为三个核心组件:...

    struts spring hibernate面试题

    ### Struts、Spring、Hibernate 面试题详解 #### 1. Action 是否线程安全?如果不是,如何保证 Action 的线程安全? - **答案**:通常情况下,Struts 的 Action 不是线程安全的。因为同一个 Action 实例可能会被多...

    Struts2+hibernate+spring的常见面试题

    在面试中,了解Struts2的核心组件及其与Struts1的区别是至关重要的。熟悉这些知识点可以帮助开发者在实际项目中更有效地利用Struts2框架,提高开发效率和应用的质量。同时,理解Web项目开发的角色划分和流程规范,也...

    关于Struts.Spring和Hibernate的面试题

    一些关于Struts.Spring和Hibernate的经典面试题

    2022年StrutsHibernateSpring经典面试题收藏.doc

    Struts、Hibernate、Spring是Java Web开发中的三大框架,它们分别负责不同的职责,共同构建了高效、解耦的J2EE应用程序。Struts主要处理表现层逻辑,通过ActionServlet接收和处理用户请求,并将控制权交给业务逻辑层...

    Struts,Hibernate,Spring经典面试题收藏

    Struts,Hibernate,Spring是Java企业级开发中三大核心框架,常被用于构建高性能、解耦的J2EE系统。...这三大框架的经典面试题涵盖了它们的核心概念、工作原理、优化技巧以及实际应用,是评估开发者技能的重要标准。

    SSH面试题,struts,hibernate,Spring面试题

    在IT行业的面试中,SSH(Struts、Hibernate、Spring)框架是常见的面试主题,因为这三大框架在企业级Java应用开发中占据着核心地位。以下是对这些框架的一些关键知识点的详细解释: 1. **Hibernate**: - **工作...

    spring struts Hibernate面试题

    在IT行业中,Spring、Struts和Hibernate是三个非常重要的Java框架,它们构成了经典的MVC(Model-View-Controller)架构,常用于企业级应用开发。面试时,掌握这些框架的基本概念、工作原理以及如何整合使用是非常...

    struts+spring+hibernate面试题

    在Java Web开发中,Struts、Spring和Hibernate是最常见的三大框架,它们...以上就是关于Struts、Spring和Hibernate面试题的详细解析,涵盖了这三大框架的关键概念和使用技巧,对于理解和解答相关面试问题非常有帮助。

    struts hibernate spring三大框架经典面试题

    2. **面试题**:Spring的IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)是如何工作的?Spring如何实现AOP?Spring事务管理有哪几种方式? 3. **使用目的**:Spring简化了组件的配置...

    Spring,hibernate,struts的面试笔试题(含答案)

    根据给定文件中的标题、描述、标签以及部分内容,下面将详细阐述Spring、Hibernate与Struts相关的面试笔试知识点。 ### Spring框架的关键概念 1. **IoC容器**:Spring框架的核心特性之一是其提供了依赖注入...

Global site tag (gtag.js) - Google Analytics