??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲福利视频网,成人在线高清视频,国产九色在线http://www.aygfsteel.com/conans/category/32741.html你越挣扎我就兴?/description>zh-cnSun, 04 Jan 2009 17:08:22 GMTSun, 04 Jan 2009 17:08:22 GMT60Spring,hibernate,struts的面试笔试题Q含{案Q?/title><link>http://www.aygfsteel.com/conans/articles/249547.html</link><dc:creator>CONAN</dc:creator><author>CONAN</author><pubDate>Fri, 02 Jan 2009 07:13:00 GMT</pubDate><guid>http://www.aygfsteel.com/conans/articles/249547.html</guid><description><![CDATA[<div id="wmqeeuq" class="blog_content">Hibernate工作原理及ؓ什么要用?<br /> 原理Q?br /> 1.dq解析配|文?br /> 2.dq解析映信息,创徏SessionFactory<br /> 3.打开Sesssion<br /> 4.创徏事务Transation<br /> 5.持久化操?br /> 6.提交事务<br /> 7.关闭Session<br /> 8.关闭SesstionFactory<br /> <br /> Z么要用:<br /> 1. 对JDBC讉K数据库的代码做了装Q大大简化了数据讉K层繁琐的重复性代码?br /> <br /> 2. Hibernate是一个基于JDBC的主持久化框架Q是一个优U的ORM实现。他很大E度的简化DAO层的~码工作<br /> <br /> 3. hibernate使用Java反射机制Q而不是字节码增强E序来实现透明性?br /> <br /> 4. hibernate的性能非常好,因ؓ它是个轻量框架。映的灉|性很。它支持各种关系数据库,从一对一到多对多的各U复杂关pR?br /> <br /> 2Q?Hibernate是如何gq加?<br /> 1. Hibernate2延迟加蝲实现Qa)实体对象 b)集合QCollectionQ?br /> <br /> 2. Hibernate3 提供了属性的延迟加蝲功能<br /> <br /> 当Hibernate在查询数据的时候,数据q没有存在与内存中,当程序真正对数据的操作时Q对象才存在与内存中Q就实现了gq加载,他节省了服务器的内存开销Q从而提高了服务器的性能?br /> <br /> 3QHibernate中怎样实现cM间的关系?(如:一对多、多对多的关p?<br /> <br /> cMcM间的关系主要体现在表与表之间的关p进行操作,它们都市对对象进行操作,我们E序中把所有的表与c都映射在一P它们通过配置文g中的many-to-one、one-to-many、many-to-many?br /> <br /> 4Q?说下Hibernate的缓存机?br /> <br /> 1. 内部~存存在Hibernate中又叫一U缓存,属于应用事物U缓?br /> <br /> 2. 二~存Q?br /> a) 应用及缓?br /> b) 分布式缓?br /> 条gQ数据不会被W三方修攏V数据大在可接受范围、数据更新频率低、同一数据被系l频J用、非 关键数据<br /> c) W三方缓存的实现<br /> <br /> 5Q?Hibernate的查询方?br /> Sql、Criteria,object comptosition<br /> HqlQ?br /> 1?属性查?br /> 2?参数查询、命名参数查?br /> 3?兌查询<br /> 4?分页查询<br /> 5?l计函数<br /> <br /> 6Q?如何优化HibernateQ?br /> 1.使用双向一对多兌Q不使用单向一对多<br /> 2.灉|使用单向一对多兌<br /> 3.不用一对一Q用多对一取代<br /> 4.配置对象~存Q不使用集合~存<br /> 5.一对多集合使用Bag,多对多集合用Set<br /> 6. l承cM用显式多?br /> 7. 表字D要,表关联不要怕多Q有二~存撑腰<br /> <br /> <br /> 7Q?Struts工作机制Qؓ什么要使用StrutsQ?br /> 工作机制Q?br /> Struts的工作流E?<br /> 在web应用启动时就会加载初始化ActionServlet,ActionServlet?br /> struts-config.xml文g中读取配|信?把它们存攑ֈ各种配置对象<br /> 当ActionServlet接收C个客戯求时,执行如下流E?<br /> -(1)索和用户h匚w的ActionMapping实例,如果不存?p回请求\径无效信?<br /> -(2)如果ActionForm实例不存?创Z个ActionForm对象,把客h交的表单数据保存到ActionForm对象?<br /> -(3)Ҏ(gu)配置信息军_是否需要表单验?如果需要验?p用ActionForm的validate()Ҏ(gu);<br /> -(4)如果ActionForm的validate()Ҏ(gu)q回null或返回一个不包含ActionMessage的ActuibErrors对象, pC单验证成?<br /> -(5)ActionServletҎ(gu)ActionMapping所包含的映信息决定将h转发l哪个Action,如果相应?Action实例不存?先创徏q个实例,然后调用Action的execute()Ҏ(gu);<br /> -(6)Action的execute()Ҏ(gu)q回一个ActionForward对象,ActionServlet在把客户h转发l?ActionForward对象指向的JSPlg;<br /> -(7)ActionForward对象指向JSPlg生成动态网?q回l客?<br /> <br /> Z么要用:<br /> JSP、Servlet、JavaBean技术的出现l我们构建强大的企业应用pȝ提供了可能。但用这些技术构建的pȝ非常的繁乱,所以在此之上,我们需要一个规则、一个把q些技术组lv来的规则Q这是框架QStruts便应q而生?br /> <br /> ZStruts开发的应用?cȝ件构成:控制器组件、模型组件、视囄?br /> <br /> 8Q?Struts的validate框架是如何验证的Q?br /> 在struts配置文g中配|具体的错误提示Q再在FormBean中的validate()Ҏ(gu)具体调用?br /> <br /> 9Q?说下Struts的设计模?br /> MVC模式: web应用E序启动时就会加载ƈ初始化ActionServler。用h交表单时Q一个配|好的ActionForm对象被创建,q被填入表单相应的数据,ActionServlerҎ(gu)Struts-config.xml文g配置好的讄军_是否需要表单验证,如果需要就调用ActionForm?ValidateQ)验证后选择请求发送到哪个ActionQ如果Action不存在,ActionServlet会先创徏q个对象Q然后调?Action的executeQ)Ҏ(gu)。ExecuteQ)从ActionForm对象中获取数据,完成业务逻辑Q返回一个ActionForward对象QActionServlet再把客户h转发lActionForward对象指定的jsplgQActionForward对象指定的jsp生成动态的|页Q返回给客户?br /> <br /> 10Q?spring工作机制及ؓ什么要?<br /> 1.spring mvch有的h都提交给DispatcherServlet,它会委托应用pȝ的其他模块负责负责对hq行真正的处理工作?br /> 2.DispatcherServlet查询一个或多个HandlerMapping,扑ֈ处理h的Controller.<br /> 3.DispatcherServlet误求提交到目标Controller<br /> 4.Controllerq行业务逻辑处理后,会返回一个ModelAndView<br /> 5.Dispathcher查询一个或多个ViewResolver视图解析?扑ֈModelAndView对象指定的视囑֯?br /> 6.视图对象负责渲染q回l客L(fng)?br /> <br /> Z么用Q?br /> {AOP 让开发h员可以创建非行ؓ性的x点,UCؓ横切x点,q将它们插入到应用程序代码中。?AOP 后,公共服务 Q比如日志、持久性、事务等Q就可以分解成方面ƈ应用到域对象上,同时不会增加域对象的对象模型的复杂性?br /> IOC 允许创徏一个可以构造对象的应用环境Q然后向q些对象传递它们的协作对象。正如单?倒置 所表明的,IOC 像?q来?JNDI。没有用一堆抽象工厂、服务定位器、单元素QsingletonQ和直接构造(straight constructionQ,每一个对象都是用其协作对象构造的。因此是由容器管理协作对象(collaboratorQ?br /> Spring即一个AOP框架Q也是一IOC容器?Spring 最好的地方是它有助于?zhn)替换对象。有?SpringQ只要用 JavaBean 属性和配置文g加入依赖性(协作对象Q。然后可以很Ҏ(gu)地在需要时替换hcM接口的协作对象。}<br /> <br /> <br /> <br /> <br /> Spring 框架是一个分层架构,?7 个定义良好的模块l成。Spring 模块构徏在核心容器之上,核心容器定义了创建、配|和理 bean 的方式,如图 1 所C?br /> <br /> l成 Spring 框架的每个模块(或组Ӟ都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下Q?br /> <br /> ?核心容器Q核心容器提?Spring 框架的基本功能。核心容器的主要lg?BeanFactoryQ它是工厂模式的实现。BeanFactory 使用控制反{ QIOCQ模式将应用E序的配|和依赖性规范与实际的应用程序代码分开?br /> <br /> ?Spring 上下文:Spring 上下文是一个配|文Ӟ?Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电(sh)子邮件、国际化、校验和调度功能?br /> <br /> ?Spring AOPQ通过配置理Ҏ(gu),Spring AOP 模块直接面向方面的~程功能集成C Spring 框架中。所以,可以很容易地?Spring 框架理的Q何对象支?AOP。Spring AOP 模块为基?Spring 的应用程序中的对象提供了事务理服务。通过使用 Spring AOPQ不用依?EJB lgQ就可以声明性事务管理集成到应用E序中?br /> <br /> ?Spring DAOQJDBC DAO 抽象层提供了有意义的异常层次l构Q可用该l构来管理异常处理和不同数据库供应商抛出的错误消息。异常层ơ结构简化了错误处理Qƈ且极大地降低了需要编写的异常代码数量Q例如打开和关闭连接)。Spring DAO 的面?JDBC 的异帔R从通用?DAO 异常层次l构?br /> <br /> ?Spring ORMQSpring 框架插入了若q个 ORM 框架Q从而提供了 ORM 的对象关pdP其中包括 JDO、Hibernate ?iBatis SQL Map。所有这些都遵从 Spring 的通用事务?DAO 异常层次l构?br /> <br /> ?Spring Web 模块QWeb 上下文模块徏立在应用E序上下文模块之上,为基?Web 的应用程序提供了上下文。所以,Spring 框架支持?Jakarta Struts 的集成。Web 模块q简化了处理多部分请求以及将h参数l定到域对象的工作?br /> <br /> ?Spring MVC 框架QMVC 框架是一个全功能的构?Web 应用E序?MVC 实现。通过{略接口QMVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText ?POI?br /> <br /> Spring 框架的功能可以用在Q?J2EE 服务器中Q大多数功能也适用于不受管理的环境。Spring 的核心要Ҏ(gu)Q支持不l定到特?J2EE 服务的可重用业务和数据访问对象。毫无疑问,q样的对象可以在不同 J2EE 环境 QWeb ?EJBQ、独立应用程序、测试环境之间重用?br /> <br /> IOC ?AOP<br /> <br /> 控制反{模式Q也UC依赖性介入)的基本概忉|Q不创徏对象Q但是描q创建它们的方式。在代码中不直接与对象和服务q接Q但在配|文件中描述哪一个组仉要哪一Ҏ(gu)务。容器(?Spring 框架中是 IOC 容器Q?负责这些联pd一赗?br /> <br /> 在典型的 IOC 场景中,容器创徏了所有对象,q设|必要的属性将它们q接在一P军_什么时间调用方法。下表列Z IOC 的一个实现模式?br /> <br /> <br /> <br /> <br /> Spring 框架?IOC 容器采用cd 2 和类? 实现?br /> <br /> <br /> 面向斚w的编E?br /> <br /> 面向斚w的编E,?AOPQ是一U编E技术,它允许程序员Ҏ(gu)切关注点或横切典型的职责分界U的行ؓQ例如日志和事务理Q进行模块化。AOP 的核心构造是斚wQ它?yu)那些媄响多个类的行为封装到可重用的模块中?br /> <br /> AOP ?IOC 是补充性的技术,它们都运用模块化方式解决企业应用E序开发中的复杂问题。在典型的面向对象开发方式中Q可能要日志记录语句放在所有方法和 Java cM才能实现日志功能。在 AOP 方式中,可以反过来将日志服务模块化,q以声明的方式将它们应用到需要日志的lg上。当Ӟ优势是 Java cM需要知道日志服务的存在Q也不需要考虑相关的代码。所以,?Spring AOP ~写的应用程序代码是松散耦合的?br /> <br /> AOP 的功能完全集成到?Spring 事务理、日志和其他各种Ҏ(gu)的上下文中?br /> <br /> IOC 容器<br /> <br /> Spring 设计的核心是 org.springframework.beans 包,它的设计目标是与 JavaBean lg一起用。这个包通常不是qL(fng)接用,而是由服务器其用作其他多数功能的底层中介。下一个最高抽象?BeanFactory 接口Q它是工厂设计模式的实现Q允?dng)R过名称创徏和检索对象。BeanFactory 也可以管理对象之间的关系?br /> <br /> BeanFactory 支持两个对象模型?br /> <br /> ?单?模型提供了具有特定名U的对象的共享实例,可以在查询时对其q行索。Singleton 是默认的也是最常用的对象模型。对于无状态服务对象很理想?br /> <br /> ?原型 模型保每次索都会创建单独的对象。在每个用户都需要自q对象Ӟ原型模型最适合?br /> <br /> bean 工厂的概忉| Spring 作ؓ IOC 容器的基。IOC 处理事情的责Q从应用程序代码{Ud框架。正如我在下一个示例中演示的那PSpring 框架使用 JavaBean 属性和配置数据来指出必设|的依赖关系?br /> <br /> BeanFactory 接口<br /> <br /> 因ؓ org.springframework.beans.factory.BeanFactory 是一个简单接口,所以可以针对各U底层存储方法实现。最常用?BeanFactory 定义?XmlBeanFactoryQ它Ҏ(gu) XML 文g中的定义装入 beanQ如清单 1 所C?br /> <br /> 清单 1. XmlBeanFactory<br /> <br /> BeanFactory factory = new XMLBeanFactory(new FileInputSteam("mybean.xml"));<br /> <br /> ?XML 文g中定义的 Bean 是被消极加蝲的,q意呛_需?bean 之前Qbean 本n不会被初始化。要?BeanFactory ?beanQ只需调用 getBean() Ҏ(gu)Q传入将要检索的 bean 的名U即可,如清?2 所C?br /> <br /> 清单 2. getBean()<br /> <br /> MyBean mybean = (MyBean) factory.getBean("mybean");<br /> <br /> 每个 bean 的定义都可以?POJO Q用cd?JavaBean 初始化属性定义) ?FactoryBean。FactoryBean 接口Z?Spring 框架构徏的应用程序添加了一个间接的U别?br /> <br /> IOC CZ<br /> <br /> 理解控制反{最单的方式是看它的实际应用。在对由三部分组成的 Spring pd 的第 1 部分q行ȝӞ我用了一个示例,演示了如何通过 Spring IOC 容器注入应用E序的依赖关p(而不是将它们构徏q来Q?br /> <br /> 我用开启在U信用帐L(fng)用例作ؓL(fng)。对于该实现Q开启信用帐戯求用户与以下服务q行交互Q?br /> <br /> ?信用U别评定服务Q查询用L(fng)信用历史信息?br /> <br /> ?q程信息链接服务Q插入客户信息,客户信息与信用卡和银行信息q接hQ以q行自动借记Q如果需要的话)?br /> <br /> ??sh)子邮g服务Q向用户发送有关信用卡状态的?sh)子邮g?br /> <br /> 三个接口<br /> <br /> 对于q个CZQ我假设服务已经存在Q理想的情况是用松散耦合的方式把它们集成在一赗以下清单显CZ三个服务的应用程序接口?br /> <br /> 清单 3. CreditRatingInterface<br /> <br /> public interface CreditRatingInterface {<br /> public boolean getUserCreditHistoryInfo<wbr>rmation(ICustomer iCustomer);<br /> }<br /> <br /> 清单 3 所C的信用U别评定接口提供了信用历史信息。它需要一个包含客户信息的 Customer 对象。该接口的实现是?CreditRating cL供的?br /> <br /> 清单 4. CreditLinkingInterface<br /> <br /> public interface CreditLinkingInterface {<br /> <br /> public String getUrl();<br /> public void setUrl(String url);<br /> public void linkCreditBankAccount() throws Exception ;<br /> <br /> }<br /> <br /> 信用链接接口信用历史信息与银行信息Q如果需要的话)q接在一Pq插入用L(fng)信用卡信息。信用链接接口是一个远E服务,它的查询是通过 getUrl() Ҏ(gu)q行的。URL ?Spring 框架?bean 配置机制讄Q我E后会讨论它。该接口的实现是?CreditLinking cL供的?br /> <br /> 清单 5. EmailInterface<br /> <br /> public interface EmailInterface {<br /> <br /> public void sendEmail(ICustomer iCustomer);<br /> public String getFromEmail();<br /> public void setFromEmail(String fromEmail) ;<br /> public String getPassword();<br /> public void setPassword(String password) ;<br /> public String getSmtpHost() ;<br /> public void setSmtpHost(String smtpHost);<br /> public String getUserId() ;<br /> public void setUserId(String userId);</div> <div id="wmqeeuq" class="blog_content">转自|络?/div> <img src ="http://www.aygfsteel.com/conans/aggbug/249547.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/conans/" target="_blank">CONAN</a> 2009-01-02 15:13 <a href="http://www.aygfsteel.com/conans/articles/249547.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>利用hibernate中的SchemaExport生成数据?http://www.aygfsteel.com/conans/articles/231798.htmlCONANCONANMon, 29 Sep 2008 06:49:00 GMThttp://www.aygfsteel.com/conans/articles/231798.htmlPSQ一般在目开发过E中Q用比较多的就是先建好表,再利用hibernate反向工程生成*.hbm.xml文g跟POJOc,个h认ؓ׃目前所使用的数据库都是关系数据库,而hibernate作ؓ一个ORMQ把Ҏ(gu)据库的操作都对象化了Q更应当从对象出发,生成数据库里面相兌Q这h加符合h认知事物的习(fn)惯?br />        ׃hibernate3提供了自带的工具hbm2ddlQ徏立根据你的对象徏立数据库是一仉常简单的事情?br />        Demol构囑֦下:
                       
1、首先徏立POJOc?br />
 1package org.apple.hibernate;
 2
 3public class User {
 4    private String id;
 5    private String name;
 6    private String password;
 7    public String getId() {
 8        return id;
 9    }

10    public void setId(String id) {
11        this.id = id;
12    }

13    public String getName() {
14        return name;
15    }

16    public void setName(String name) {
17        this.name = name;
18    }

19    public String getPassword() {
20        return password;
21    }

22    public void setPassword(String password) {
23        this.password = password;
24    }

25
26}
2、根据POJOc里面里面相关的字段写User.hbm.xml映射文g
 1<?xml version="1.0" encoding="GB2312"?>
 2<!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
 3<hibernate-mapping>
 4    <class name="org.apple.hibernate.User">
 5        <!--hibernate为我们生成主键id-->
 6        <id name = "id" unsaved-value = "null">
 7            <generator class="uuid.hex"/>
 8        </id>
 9        
10        <!--默认把类的变量映ؓ相同名字的表列,当然我们可以修改其映方?/span>-->
11        <property name="name"/>
12        <property name="password"/>
13    </class>
14</hibernate-mapping>
3、徏?font style="background-color: #c7edcc">hibernate.cfg.xml

 1<!DOCTYPE hibernate-configuration PUBLIC
 2    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 3    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
 4
 5<hibernate-configuration>
 6    <session-factory>
 7        
 8        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
 9        <property name="hibernate.show_sql">true</property>
10        <mapping resource="org/apple/hibernate/Person.hbm.xml"/>
11    </session-factory>
12</hibernate-configuration>
 4、徏?nbsp;hibernate.properties数据库链?br /> ## 数据库链接,密码自己Ҏ(gu)自己的实际数据库q行修改Q?br /> hibernate.dialect org.hibernate.dialect.MySQLDialect
hibernate.connection.driver_class com.mysql.jdbc.Driver
hibernate.connection.url jdbc:mysql://localhost/usertest?useUnicode=true&characterEncoding=GBK
hibernate.connection.username root
hibernate.connection.password password

5、徏?font style="background-color: #c7edcc">UserTest
c?br />
 1package org.apple.hibernate;
 2
 3import org.hibernate.cfg.Configuration;
 4import org.hibernate.tool.hbm2ddl.SchemaExport;
 5
 6
 7
 8class UserTest
 9    public static void main(String[] args) throws Exception{            
10        //配置环境Q分析xml映射文g
11        Configuration conf= new Configuration()
12            .addClass(User.class);
13        
14        //生成q输出sql到文Ӟ当前目录Q和数据?/span>
15        SchemaExport dbExport=new SchemaExport(conf);
16        dbExport.create(truetrue);
17            }

18}
6、徏?font style="background-color: #c7edcc">log4j.properties日志文g

### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### set log levels - for more verbose logging change 'info' to 'debug' ###

log4j.rootLogger=warn, stdout


PSQ要在mysql数据库里面先建立好usertest表,然后q行UserTestc,q样可以顺利通过hibernate3提供了自带的工具hbm2ddlQ徏立根据你的对象徏立数据库相关表?br /> 打开mysql数据库:
                      
大功告成Q?br />

CONAN 2008-09-29 14:49 发表评论
]]>
Q{载)spring+hibernate避免延迟加蝲异常 http://www.aygfsteel.com/conans/articles/212420.htmlCONANCONANThu, 03 Jul 2008 12:30:00 GMThttp://www.aygfsteel.com/conans/articles/212420.html在hibernate中,延迟加蝲?个非常大的优点,但有时候却l我们带来一些小ȝQ在后台查询l束后,session已经关闭Q但在前台显C的时候,如果存在兌关系׃产生延迟加蝲异常?br /> 解决办法是客L(fng)每次h分?个session,请求结果返回给客户端,q完成展现后关闭session?br /> 实现q个功能非常单,在web.xml中加入以下配|?br />

<filter>
      <filter-name>hibernateFilter</filter-name>
              <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter </filter-class>
      <init-param>
          <param-name>singleSession</param-name>
          <param-value>true</param-value>
      </init-param>
</filter>
<filter-mapping>
      <filter-name>hibernateFilter</filter-name>
      <url-pattern>*.do</url-pattern>
  </filter-mapping>


使用spring提供q个qo器就可以实现session的集中管理了Q所有以.dol尾的请求都自动分配?个session,q且在这个请求过E中都用这个session.



CONAN 2008-07-03 20:30 发表评论
]]>
վ֩ģ壺 ƽ| | Ԫ| | Ϋ| ں| | ȳ| | | ɳƺ| ˫| | | ԫ| ϴ| Ͽ| | | | ɽ| | | ͬ| ³ƶ| | ֣| | | ̩| | ̨| ʡ| | ¬| | Ϫ| | | | пѷ|