Java三大框架(ssh)总结

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模式的标签API

3.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,打开session

Session session=new

Configuration().configure().buildSessionFactory().openSession();

2)开启事务(增删改必须)

Transaction tx=session.beginTransaction();

3)持久化操作

session.save(emp);

4)提交事务

https://www.360docs.net/doc/285551285.html,mit();

5)关闭session

session.close();

4.4 实体对象的生命周期

由产生到被GC回收的一段过程

1)自由状态(Transient)

2)持久状态(Persistent)

3)游离状态(Detached)

第五章Hibernate关联映射及高级查询

5.1 配置对象关联属性

5.1.1对象关联关系种类

一对多(多对一)关联

一对一关联

多对多关联

5.1.2 一对多(多对一)配置

1)删除外键

2)持久化类添加关联类的相关属性及getter/setter方法

3)映射文件中建立该属性和数据库表字段的映射信息

column="DNO"lazy="false"/>

5.1.3 一对一配置

unique="true"column="rid"lazy="false">

property-ref="resume">

5.1.3 多对多配置

创建中间表、两端数据库表的持久化类,针对中间表的持久化类分别和两端的数据库表的持久化类创建一对多的关联

inverse="false">

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标签并列):

HQL语句

]]>

在程序中使用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查询

Select e.* from Emp e where e.ename=”nn”

]]>

Query query=session.getNamedQuery(“aaa”);

6.5 定制SQL

class节点下:

sql语句

sql语句

第七章缓存与注解

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节点下添加

应用场景:

●很少被修改的数据

●不是很重要的数据,允许出现偶尔并发问题

●不会被并发访问的数据

●应用参考的常量数据。极少实例或从来不会被修改

以下数据不适合放进二级缓存:

●经常被修改的数据

●财务数据

●与其他应用共享的数据

7.4 查询缓存

步骤:

●在Hibernate.cfg.xml中开启查询缓存

●在程序中手动启用查询缓存

query.setCacheable(true);

7.5 注解简介

使用Hibernate注解步骤:

●添加jar包

●使用注解配置持久化类以及对象关联关系

●使用AnnotationConfiguration建立会话工厂

Session session=new AnnotationConfiguration().configure()

.builSessionFactory().openSession();

●在Hibernate配置文件中声明持久化类

7.6 命名查询

@NamedQuery(name = "getGradeByGno", query = "from Grade where gno>:gno")

Query query=session.getNamedQuery(“getGradeByGno”);

7.7 本地查询

@NamedNativeQuery(name = "getGrades", query = "select g.* from grade g where

g.gno>:gno", resultSetMapping = "all")

@SqlResultSetMapping(name = "all", entities = {

@EntityResult(entityClass = cn.wang.entity.Grade.class) }) Query query = session.getNamedQuery("getGrades");

Struts2框架

第一章Web前端与MVC

1.1 初识jQuery

jQuery是一个优秀的JavaScript框架。它是轻量级的JavaScript库。

宗旨:”Write Less, Do More”。

jQuery能满足如下需求:

?取得页面中的元素。

?修改页面的外观。

?改变页面内容。

?响应用户的页面操作。

?为页面添加动态效果。

?不需刷新页面即可从服务器获取信息。

?简化常见的JavaScript任务。

常见JavaScript库:

?prototype。

?YUI。

?ExtJS。

?jQuery。

jQuery特色:

?利用css优势

?支持扩展

?抽象浏览器不一致性

?总算面向集合

?将多行操作集于一行

1.2 jQuery基本语法

1.2.1 准备工作

下载jQuery库(https://www.360docs.net/doc/285551285.html,).

在页面元素中引入jQuery库