您好,欢迎访问三七文档
SSH三大框架SSH三大框架Web层Struts2框架•Ssh框架图解业务层Spring框架持久层Hibernate数据库Hibernate•Hibernate简介。•Hibernate的Xml配置方法。•Hibernate应用步骤。•主键生成机制。Hibernate简介?•Hibernate是对象/关系映射(ORM)的解决方案。---hibernate是java和关系型数据库的桥梁,负责java对象和关系数据的映射。---hibernate是一个开源的对象关系型映射框架,它对jdbc进行了非常轻量级的对象封装。---hibernate的目标是成为java平台管理数据持久问题的完整解决方案。---使java开发人员更加专注于业务的熟悉和处理,而非对数据库的基本操做,同时让开发人员以面对对象的思想操作数据库•Hibernate原理就是利用了ORM映射机制。他的本质就是将数据从一种形式转换成另一种形。就是将对象模型中的实体类存入关系模型中,实体中类对应关系模型中中的一个表,实体类中的属性对应表中的一个列,实体类的一个实对应数据库的一条记录。•。Hibernate结构简单介绍hibernate的结构hibernate简介---Hibernate是一个优秀的java持久层的解决方案---是是当今主流的对象——关系型映射工具---Hibernate简化了jdbc繁琐的代码---Hibernate将数据库的链接信息都放在配置文件中Hibernate配置的两种方法•1.属性文件(Hibernate.properties)•调用代码:Configurationconf=newConfiguration();•2.Xml文件(Hibernate.cfg.xml)•调用代码:Configurationconf=newConfiguration().configure();Hibernate配置文件的书写Hibernate.cfg.xmlHibernate映射文件的书写Student.hbm.xmlHibernate常用的主键生成策略•1:assigned----表示在新增数据时由应用程序指定主键的值。主要针对主键是采用自然主键的形式。这种方式,适用于主键列不是自动增长列。其缺点为在执行新增操作时,需查询数据库判断生成的主键是否已经存在。2:increment----表示新增数据操作时由hibernate自动生成主键值。其生成的值为:先查询该主键列的最大值,然后在最大值的基础上加上1.适用于采用代理主键形式的主键列。同样不能用于主键列是自动增长的表。但是,该主键生成策略也有些缺点。(1)新增数据前先查询一遍,影响了性能。(2)主键的类型只能为数值型的int或者long(3)并发操作时的冲突问题。3:identity----不如说是为sqlerver数据库量身定做的。主要适用于sqlserver数据库的自动增长列的表。4:native----表示根据不同的数据库采用不同的主键生成策略。比如,当前数据库为sqlserver,则会采用identity,如为oracle,则采用5.sequenceDB2、Oracle均支持的序列,用于为long、short或int生成唯一标识Hibernate关联关系映射•1:一对一关联2:一对多关联3:多对多关联创建一个Hibernate的步骤•1.创建一个web项目,导入Hibernate所需要的.jar包•2.在数据库中创建表格,•3.创建对应的pojo类,4.创建Hibernate.hbm.xnl配置文件配置数据库相关属性•5.创建对应pojo类的映射文件,与数据库中的表对应Hibernate常用的接口1.Configuration接口configuration对象用于加载解析配置文件启动Hibernate,然后创建SessionFactory实例2.SessionFactory接口一个SessionFactory实例对应一个数据存储源,应用从SessionFactory中获取Session实例。SessionFactory有以下特点:1.它是线程安全的,这意味着它的同一个实例可以被应用的多个线程共享。2.它是重量级的,这意味着不能随意创建或销毁它的实例。如果应用只访问一个数据库,只需要创建一个SessionFactory实例,在应用初始化的时候创建该实例。如果应用同时访问多个数据库,则需要为每个数据库创建一个单独的SessionFactory实例。之所以称SessionFactory是重量级的,因为它需要一个很大的缓存,用来存放预定义的SQL语句及映射元数据等。用户还可以为SessionFactory配置一个缓存插件,这个缓存插件被称为Hibernate的二级缓存,该缓存用来存放被工作单位读过的数据,将来其他工作单元可能会重用这些数据,因此这个缓存中的数据能被所有的工作单元共享。一个工作单元通常对应一个数据库事务。Hibernate常用的接口3.Session接口Session用来操作数据库;session接口是Hibernate应用中最广泛的接口。Session也被称为持久化管理器。它提供了和持久化相关的操作。Session有以下特点:1.它不是线程安全的,因此在设计软件架构的时候,应该避免多个线程共享一个Session实例。2.Session实例是轻量级的,所谓轻量级,是指它的创建和销毁不需要消耗过多的资源。这意味着在程序中可以经常地创建或者销毁Session对象,如为每个客户请求分配单独的Session实例,或者为每个工作单元分配单独的Session实例。session有一个缓存,被称为Hibernate的第一级缓存,它存放被当前工作单元加载的对象,每个Session实例都有自己的缓存,这个Session实例的缓存只能被当前的工作单元访问。4.Transaction接口Transaction接口是Hibernate的数据库的数据库事务接口,它对底层的事务接口做了封装。底层事务接口包括:1.jdbcAPI2.JTA(JAVATransationAPI)3.CORBA(CommonObjectRequestBrokerArchitecture)API5.Query和Criteria查询数据Hibernate操作数据库•1读取并解析配置文件•Configurationconf=newConfiguration().configure();•2读取并解析映射信息,创建SessionFactory•SessionFactorysf=conf.buildSessionFactoty();•3打开Session•Sessionsession=sf.openSession;//sf.getCurrentSession();•4开始一个事务(增删改操作必须,查询操作可选)•Transactiontx=session.beginTransaction();•5数据库操作•session.sava();//实现添加功能•6提交事务(回滚事务)•tx.commit();(tx.rollback();)•7关闭session•session.close();Hibernate缓存机制1.Hibernate缓存机制分为一级缓存和二级缓存Session的缓存被称为hibernate的第一级缓存。默认是开启的。SessionFactory的外置缓存称为hibernate的二级缓存。这两个缓存都位于持久层,它们存放的都是数据库数据的拷贝。SessionFactory的内置缓存存放元数据和预定义SQL,SessionFactory的内置缓存是只读缓存。Session缓存的三大作用1,减少数据库的访问频率,提高访问性能。2,保证缓存中的对象与数据库同步,位于缓存中的对象称为持久化对象。3,当持久化对象之间存在关联时,Session保证不出现对象图的死锁缓存配置文件中的属性说明diskStore设置缓存数据文件的存放目录defaultCache设置缓存的默认数据过期策略cache设定具体的命名缓存的数据过期策略每个命名缓存代表一个缓存区域,每个缓存区域有各自的数据过期策略。命名缓存机制使得用户能够在每个类以及类的每个集合的粒度上设置数据过期策略。cache元素的属性name设置缓存的名字,它的取值为类的全限定名或类的集合的名字maxInMemory设置基于内存的缓存中可存放的对象最大数目eternal设置对象是否为永久的,true表示永不过期,此时将忽略timeToIdleSeconds和timeToLiveSeconds属性;默认值是falsetimeToIdleSeconds设置对象空闲最长时间,超过这个时间,对象过期。当对象过期时,EHCache会把它从缓存中清除。如果此值为0,表示对象可以无限期地处于空闲状态。timeToLiveSeconds设置对象生存最长时间,超过这个时间,对象过期。如果此值为0,表示对象可以无限期地存在于缓存中。overflowToDisk设置基于内在的缓存中的对象数目达到上限后,是否把溢出的对象写到基于硬盘的缓存中Session什么时候清理缓存?•1,commit()方法被调用时•2,查询时会清理缓存,保证查询结果能反映对象的最新状态。•3,显示的调用session的flush方法Struts2Struts2简介•Struts2是一个web框架,一个mvc框架•Struts2的体系结构与Struts1的体系结构差别巨大。Struts2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts2可以理解为WebWork的更新产品。虽然从Struts1到Struts2有着太大的变化,但是相对于WebWork,Struts2的变化很小。Struts2框架本身大致可以分为3个部分:核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务逻辑组件。核心控制器FilterDispatcher是Struts2框架的基础,包含了框架内部的控制流程和处理机制。业务控制器Action和业务逻辑组件是需要用户来自己实现的。用户在开发Action和业务逻辑组件的同时,还需要编写相关的配置文件工作原理Struts2原理•在Struts2框架中的处理大概分为以下几个步骤•1客户端初始化一个指向Servlet容器(例如Tomcat)的请求•2这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMeshPlugin)•3接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action•4如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy•5ActionProxy通过ConfigurationManager询问框架的配置文件,找到需要调用的Action类•6ActionProxy创建一个ActionInvocation的实例。•7ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。•8一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2框架中继承的标签。在这个过程中需要涉及到ActionMapper••基本简要流程如下:•1、客户端浏览器发出HTTP请求。•2、根据web.xml配置,该请求被FilterDispatcher接
本文标题:三大框架ssh
链接地址:https://www.777doc.com/doc-3433667 .html