当前位置:文档之家› Java三大框架(ssh)总结

Java三大框架(ssh)总结

Hibernate框架第一章数据结构1.1认识数据结构数据:是信息的载体,是能够被计算机识别、存储、计算的符号集合是计算机处理的对象的总称;数据元素:也称为结点,是组成数据的基本单位;数据项:是数据的最小单位;数据对象:是具有相同特征的数据元素的集合,它是数据的子集;数据结构:计算机存储、组织数据的方式;●逻辑结构:指从逻辑关系上描述数据,与数据的存储无关,且独立于语言;⏹线性结构:有且仅有一个开始结点和一个终端结点,所有结点最多只有一个前驱结点和一个直接后继结点;⏹非线性结构:指一个结点可能有多个直接前驱和直接后继结点。

●存储结构:指数据元素及其关系在计算机存储时如何表示,依赖于语言;●数据运算:通茶昂贵定义在数据的逻辑结构上。

1.2算法是为求解一个问题需要遵循的,被清晰的制定的简单指令的集合;正确的算法有如下特点:●用待处理问题的相关信息作为输入数据●对一个既定的合法输入,多次执行同一算法,总返回同一个结果(随机算法除外)●算法中的指令是可行的,即每个指令都可以实现●算法中指令的数量是有限的●算法执行完毕后,能够输出正确的数据集合1.3算法分析目的在于选择合适的算法,算法分析是从复杂度来考虑的。

复杂度:衡量一个算法好坏的重要手段;●时间复杂度:以算法执行时间长短来衡量●空间复杂度:以算法执行占用的存储空间来衡量第二章算法第三章设计模式3.1面向对象设计原则单一职责原则:要求每个对象应该只有一种责任;开闭原则:设计程序时对扩展开放,对修改关闭;里氏替换原则:任何情况下,子类替换父类,不会影响程序运行;依赖倒置原则:提倡高层不依赖底层,二者都依赖抽象;接口隔离原则:把多个功能分开声明,不强迫客户实现不需要的功能;迪米特原则:最少只是原则尽可能的降低访问级别;组合/聚合复用原则:尽量不用继承达到复用类的目的,而是使用组合和聚合。

3.2设计模式分类创建型模式:如何创建对象以及何时创建对象,工厂模式,单例模式结构型模式:对象该如何组织以及采用什么样的结构更合理行为型模式:规定了各个对象应该具备的职责以及对象间的通信模式3.3什么是框架应用程序骨架;框架技术的优势在于:●不用再考虑公共问题,框架已经帮我们做好了●可以专心在业务逻辑上,保证核心业务逻辑的开发质量●结构统一,便于学习、维护●框架集成的前人的经验有助于写出稳健、性能优良并且结构优良的高质量程序3.4主流框架3.4.1 Struts框架最早的Java开源框架之一,定义了通用的Controller(控制器),通过配置文件(一般是struts-config.xml)隔离了Model(模型)和View(视图),以Action的概念对用户请求进行了封装,是代码更清晰易读。

3.4.2 Struts2框架新的框架特性:●从逻辑中分离出横切关注点的拦截器●减少或者消除配置文件●贯穿整个框架的强大表达式语言●支持可变更和可重用的基于MVC模式的标签API3.4.3 Hibernate框架对JDBC进行了非常轻量级的对象封装,可以应用在任何使用JDBC的场合3.4.5 Spring框架轻量级框架,主要作为依赖注入容器和AOP实现存在,还提供了声明式事务、对DAO 层的支持等简化开发功能。

其优点有:●低侵入式设计,代码污染极低●独立于何种应用服务器,可以真正实现“Write Once,Run Anywhere”●Spring的DI机制降低了业务对象替换的复杂性●Spring开发并不完全依赖于Spring的所有组件,开发者可以自由选择使用Spring框架的部分或全部组件。

第四章Hibernate实现数据操作4.1 Hibernate概述一个优秀的Java持久化层解决方案,是当今主流的对象-关系映射(ORM)工具4.1.1 理解持久化●瞬时状态:程序退出,数据就不存在了●持久状态:在程序退出后,以文件的形式保存在硬盘中。

●持久化:将程序中的数据在瞬时状态和持久之间转换的机制4.1.2 对象-关系映射:能在对象和关系型数据库两者之间进行数据转换的机制4.2 搭建Hibernate项目环境●加载Hibernate驱动包;●创建Hibernate.cfg.xml文件,指定数据库连接信息及其映射文件路径●创建持久化类和映射文件,并在Hibernate.cfg.xml中指定映射文件路径●创建Hibernate连接工具类4.3 在Hibernate中执行持久化操作的步骤1)读取并解析配置文件,读取并解析映射文件,创建SessionFactory,打开sessionSession session=newConfiguration().configure().buildSessionFactory().openSession();2)开启事务(增删改必须)Transaction tx=session.beginTransaction();3)持久化操作session.save(emp);4)提交事务mit();5)关闭sessionsession.close();4.4 实体对象的生命周期由产生到被GC回收的一段过程1)自由状态(Transient)2)持久状态(Persistent)3)游离状态(Detached)第五章Hibernate关联映射及高级查询5.1 配置对象关联属性5.1.1对象关联关系种类一对多(多对一)关联一对一关联多对多关联5.1.2 一对多(多对一)配置1)删除外键2)持久化类添加关联类的相关属性及getter/setter方法3)映射文件中建立该属性和数据库表字段的映射信息<set name="emps"cascade="all"lazy="false"><key column="DNO"></key><one-to-many class="cn.wang.entity.Emp"/></set><many-to-one name="dept"class="cn.wang.entity.Dept"column="DNO"lazy="false"/>5.1.3 一对一配置<many-to-one name="resume"class="cn.wang.entity.Resume"unique="true"column="rid"lazy="false"></many-to-one> <one-to-one name="userInfo"class="erInfo"property-ref="resume"></one-to-one>5.1.3 多对多配置创建中间表、两端数据库表的持久化类,针对中间表的持久化类分别和两端的数据库表的持久化类创建一对多的关联<set name="teas"table="tea_stu_temp"lazy="false"inverse="true"> <key column="SNO"></key><many-to-many column="TNO"class="cn.wang.entity.Teacher"/> </set><set name="stus"table="tea_stu_temp"cascade="all"lazy="false"inverse="false"><key column="TNO"></key><many-to-many column="SNO"class="cn.wang.entity.Student"/> </set>5.2 HQL查询步骤:得到Session→编写HQL语句→创建Query对象→执行查询,得到结果属性查询:直接指定属性:select eno,ename from Emp通过构造方法:select new Emp(eno,ename) from Emp实体更新:update Emp set ename=’xxx’where eno=10001实体删除:delete from Emp where eno=10001占位符:from Emp where eno=?命名参数:from Emp where eno=:eno查询排序:默认升序:from Emp order by eno指定降序:from Emp order by eno desc 升序:asc 分页:Query接口提供的方法:setFirstResult(); setMaxResult();第六章Criteria查询及命名查询6.1 Criteria查询概述Criteria查询又称对象查询,采用对象的方式封装查询条件,并提供Restrictions 等类型做辅助,是传统SQL的对象化表示:Criteria c=sesson.createCriteria(Emp.class);c.list();获取所有数据;Restrictions限制结果集:按薪资降序:c.addOrder(Order.desc("salary"));按编号查询:c.add(Restrictions.eq("dept.dno", dno));按薪资区间查询c.add(Restrictions.between("salary", minSalary, maxSalary));查询指定属性:ProjectionList p = Projections.projectionList();p.add(Property.forName("eno"));p.add(Property.forName("ename"));p.add(Property.forName("salary"));c.setProjection(p);查询最高工资:c.setProjection(Projections.max("salary"));分页并排序:c.setFirstResult((pageIndex - 1) * pageSize);c.setMaxResults(pageSize);c.addOrder(Order.desc("salary"));6.2 命名HQL查询修改相应的映射文件(与class标签并列):<query name=”aaa”><![CDATA[HQL语句]]></query>在程序中使用session对象的getNamedQuery()方法获取在映射配置文件中添加的HQL插叙语句Query query=session.getNamedQuery(“aaa”);6.3 本地sql查询String sql=”select e.* from Emp where e.ename=’ccc’”SQLQuery query=session.createSQLQuery(sql).addEntity(“e”,Emp.class)6.4 命名sql查询<sql-query name=”aaa”><![CDATA[Select e.* from Emp e where e.ename=”nn”]]><return alias=”e” class=”cn.wang.entity.Emp”></sql-query>Query query=session.getNamedQuery(“aaa”);6.5 定制SQLclass节点下:<sql-insert>sql语句</sql-insert><sql-update>sql语句</sql-update>第七章缓存与注解7.1 缓存简介7.1.1 缓存分类:●一级缓存:Session●二级缓存:SessionFactory●查询缓存:依赖于二级缓存7.1.2 缓存作用范围:与三类缓存一一对应●事务范围●进程范围●集群范围7.2 一级缓存作用:减少访问数据库的频率保证数据库中的相关记录与缓存中的相应对象保持同步7.3 二级缓存配置步骤:●添加JAR包,ehcache-1.2.3.jar和commons-loging-1.1.1.jar●添加ehcache.xml到src目录●在Hibernate.cfg.xml中指定提供商和开启二级缓存●配置实体类映射文件,class节点下添加<cache usage=””/>应用场景:●很少被修改的数据●不是很重要的数据,允许出现偶尔并发问题●不会被并发访问的数据●应用参考的常量数据。

相关主题