java 2复习.docx
- 文档编号:15321784
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:90
- 大小:372.68KB
java 2复习.docx
《java 2复习.docx》由会员分享,可在线阅读,更多相关《java 2复习.docx(90页珍藏版)》请在冰点文库上搜索。
java2复习
--double:
必须是双精度数,可以定义小数的范围,常用参数:
min、max
--Fieldexpression:
对指定的OGNL表达式求值
--email:
必须符合邮件书写格式
--url:
必须符合网址书写格式
--regex:
格式检验器,必须符合指定的书写格式
Struts2校验器的配置方式有两种:
--字段型校验器的配置方式,书写格式:
--非字段型校验器的配置方式:
书写格式:
--
字段型校验器配置说明:
--validators:
根标签,用于包含所有需检验的域标签
--field:
域标签,使用name属性来指定检验属性
--field-validator:
域检验标签,通过type属性指定检验器来定义检验机制
--param:
用于定义检验域的参数,包含在field-validator标签中
--message:
显示资源文件中key属性所对应的出错信息,包含在field-validator标签中,且放在param标签后面
使用字段校验器校验输入数据示例:
(见实验六)
第8讲Hibernate应用基础知识
8.1ORM
问题的引入:
--Java面向对象语言:
对象模型,主要概念是类、对象、继承、多态、关联等
--关系型数据库:
关系模型,主要概念是表、记录、主键、外键等
--面向对象语言和数据库之间存在模型不匹配(阻抗不匹配)问题
问题解决办法:
--使用ORM框架
ORM框架:
对象关系映射,O/RMapping,用于将Java应用中的对象与关系数据库中的数据相互转化
8.2hibernate
主流的ORM框架有hibernate、TopLink等,其中hibernate应用最广泛
8.2.1Hibernate运行环境
需要hibernate3.jar及依赖类库jar
对hibernate3.5,依赖类库jar文件主要有lib\required目录下的所有jar文件以及log4j-1.2.14.jar和slf4j-log4j12-1.5.6.jar
hibernate.cfg.xml配置文件、hibernate.properties属性文件
--用于配置数据库连接设置、Hibernate属性设置及映射文件设置。
--两者取一,常用xml文件
hibernate.cfg.xml示例:
(书P163)
8.2.2持久化对象
ORM中的O称为持久化对象,由持久化类产生。
持久化类编写规范:
--必须具有无参构造方法
--具有一个主键属性
--非final类,否则对懒加载有影响
--使用JavaBean的编写规范来编写属性和setter和getter方法
持久化类创建示例:
(P164)
8.2.3映射文件
用于设置持久化类与数据库表的映射关系,是hibernate的核心所在。
一般以持久化类名+hbm.xml来命名,如Person.hbm.xml;并保存在与持久化类同目录下
最主要的元素有:
--
设置类-表之间的映射
--
设置主键映射
--
设置属性-表字段之间的映射
--
设置关联映射
映射文件示例:
(P167)
常用主键生成方式:
--assigned:
由应用程序生成
--identity:
使用数据库提供的自增主键机制,如Mysql
--sequence:
使用数据库提供的sequence机制生成主键,如oracle
--native:
由hibernate根据数据库驱动定义,自行选择主键生成机制
8.2.4Hibernate核心API
Configuration对象:
--负责读取及解析Hibernate的配置信息--创建SessionFactory实例
Configuratoncfg=newConfiguration();
cfg.configure();//读取配置文件
SessionFactorysf=cfg.buildSessionFactory();
SessionFactory接口:
--缓存了解析后的配置信息
--在应用初始化时创建,一个应用程序只有一个会话工厂
--用于创建Session实例
Configuratoncfg=newConfiguration();
cfg.configure();//读取配置文件
SessionFactorysf=cfg.buildSessionFactory();
Sessionsession=sf.openSession();
Session接口:
--Session代表与数据库之间的一系列操作
--所有持久化操作都需要使用该接口
--所有持久化操作完成后,需要关闭会话
Configuratoncfg=newConfiguration();
cfg.configure();//读取配置文件
SessionFactorysf=cfg.buildSessionFactory();
Sessionsession=sf.openSession();
Session接口常用的几个方法:
方法
描述
save(Objectobject)
将指定对象进行持久化
persist(Objectobject)
将指定对象进行持久化
Objectload(ClasstheClass,Serializableid)
根据指定id,在指定类中查找持久化实例,如果找不到,将抛出异常
Objectget(Classclazz,Serializableid)
根据指定id,在指定类中查找持久化实例,如果找不到,返回null
update(Objectobject)
将指定对象更新到数据库,如数据库中没有记录,抛出异常
delete(Objectobject)
从数据库中删除指定对象
TransactionbeginTransaction()
在进行持久化操作前开启事务
Transaction接口:
--使用Hibernate进行持久化操作(除了查询外)必须显示开启事务
--使用Session实例开启事务
--持久化操作在事务提交后生效
Configuratoncfg=newConfiguration();
cfg.configure();//读取配置文件
SessionFactorysf=cfg.buildSessionFactory();
Sessionsession=sf.openSession();
Session.beginTransaction();//开启事务
8.3开发一个简单的Hibernate项目(P164—P167)
8.4Hibernate中Java对象的状态
在hibernate中,Java对象在整个生命周期中存在以下三种状态:
--瞬时状态:
在内存中刚刚创建的对象,数据库中没有数据与之对应,与session也没有关联
--持久化状态:
数据库中有数据与之对应,且与session有关联;持久对象状态发生改变时,事务提交时会自动更新数据库
--游离状态:
数据库中有数据与之对应,但当前没有session与之关联;对象状态发生改变,hibernate不能检测到,必须调用update()才能更新到数据库
※游离对象与瞬时对象不同的地方是,游离对象比瞬时对象多了一个数据库主键字段值id.
8.5持久层设计模式
数据的持久化就是将内存中的数据固化到服务器的存储介质中。
在企业级应用中,通常将数据的持久化放到一个相对独立的逻辑层面上,这个逻辑层称为持久层。
数据持久化设计的模式主要有:
--混杂模式:
在业务代码中夹杂着数据持久化代码。
适用于小型应用,可读性差,后期维护和扩展困难
--基于Dataclass的持久层实现模式(DAO模式):
使用接口及其实现类把对数据库的处理技术抽象出来,放到单独的接口和类中。
--基于持久层框架的实现模式:
是第二种模式的延伸,将繁杂的SQL代码处理交给第三方组件完成
8.6基于持久层框架的DAO模式应用示例(见实验七)
第10讲组件映射
10.1组件映射的概念
粗粒度的对象模型设计:
一个表映射成一个持久类
细粒度的对象模型设计:
一个表映射成两个或多个类,其中只有一个类有标识符属性,其它类都没有标识符标识符属性,这些没有标识符属性的类称为组件。
10.2组件映射的应用(见实验八)
第11讲关联映射
11.1概述
●一个信息系统中的数据库表之间一般存在一定的关联关系,相应地,使用Hibernate进行映射时,持久化类之间也存在一定的关联关系。
●类之间的关联是指一个类知道另一个类的属性的方法
●关联方式:
1.一对一2.一对多或多对一3.多对多
●根据关联的导航性,可以分为单向关联和双向关联
11.2多对一和一对多关联
多对一和一对多关联是从不同的方向来看的结果,如用户和银行帐户,从用户角度看是一对多关系;而从银行帐户角度看则是多对一关系
单向多对一关联
语法:
--需要在“多”的一方(主动方)的持久化类中声明一个“一”方(被动方)类型的属性
--在“多”的一方的映射文件中使用
--需要在
单向多对一关联应用示例(见书P204—P208)
单向一对多关联
语法:
--需要在“一”的一方(主动方)的持久化类中声明一个元素为“多”方(被动方)类型的集合属性
--在主动方的映射文件中使用
--在
--必须在
--可在
单向一对多关联应用示例(见书P220—P223)
双向一对多关联
语法:
--同时应用单向一对多和单向多对一关联的语法
--可在一对多关联的设置中可设置控制反转:
在
双向一对多关联应用示例(见书P230—P233)
11.3一对一关联
一对一关系表在hibernate映射中使用两种处理方式:
--唯一外键:
是多对一的特殊形式,要求在一方映射表中多方不能重复出现
--共享主键:
指的是被动方的主键通过外键的方式使用主动方的主键
唯一外键关联
语法:
--需要在关联主动方中声明一个被关联类型的属性
--需要在关联主动方的映射文件中使用
--如果是双向关联,则在另一个关联方的映射文件中使用
唯一外键关联应用示例(见书P215—P218)
共享主键关联
语法:
--需要在每个持久化类中声明一个关联被动方类型的属性
--需要在每个持久类的映射文件中使用
--被动方的主键生成方式必须设置为“foreign”
11.4多对多关联
多对多关联通常需要使用一个中间表来关联
语法:
--需要在关联主动方的持久化类中声明一个元素为被动方类型的集合属性
--在主动方的映射文件中使用
--在
--使用
单向多对多关联应用示例(见书P223—P228)
第12讲继承映射
12.1概述
关系数据库的表之间不存在继承关系,为了将面向对象中的继承与关系数据库中的表进行映射,可以使用以下三种继承映射策略:
1.每个继承层次一张表2.每个具体类一张表3.每个子类一张表
12.2每个继承层次一张表
●这种映射方式用一张表存放整个继承层次结构中每个类的全部成员属性
●为了区分不同的层次结构,需要在表中增加一个称为“鉴别”名称的字段
映射语法:
--将继承层次的各个类定义为持久类,其中只有父类包含标识符属性
--只有一个以父类命名的映射文件
--在映射文件中,必须使用
--在映射文件中,父类的属性直接放在
每个继承层次一张表策略的优缺点:
优点:
最简单、执行效率最高(因为无需进行任何关联操作)
缺点:
在数据表中需要加入额外的区分各个类的字段;同时不允许为子类的成员属性对应的字段定义为notnull约束
12.3每个具体类一张表
这种映射方式为每个子类创建一张表,每张表包含子类的所有属性,包括继承的父类的成员属性
映射语法:
--定义父类为抽象类,每个子类为具体类
--父类不映射成表,每个子类映射一张表
--只有一个以父类命名的映射文件
--将子类属性放在
每个具体类一张表策略的优缺点:
优点:
可以对子类的成员属性映射的字段定义notnull约束
缺点:
不符合关系模型的常规设计规则,存在太多冗余字段
12.4每个子类一张表
这种映射方式为每个类创建一张表,每张表仅包含当前类中定义的成员属性,不包含父类的成员属性
映射语法:
--父类和子类分别映射到不同的表,父类与子类对应的表通过外键关联
--只有一个以父类命名的映射文件
--子类属性放在映射文件中的
每个子类一张表策略的优缺点:
优点:
支持多态关联和多态查询,可以对子类的成员属性映射的字段定义notnull约束
缺点:
查询性能不如每个类分层结构一张表
第13讲HQL
13.1HQL概述
使用Hibernate查询的方式有以下三种:
●使用HQL:
HibernateQueryLanguage,具有与SQL相类似语法的面向对象化的查询语句,用于操作实体及其属性。
●使用Creteria对象:
按条件查询和按示例查询
●使用原生(native)SQL语句
HQL示例:
selectpfromPersonp
HQL语句中的实体类名和属性名区分大小写,除此之外,不区分大小写。
所有HQL查询,都需要通过org.hibenate.Query类型的对象来执行
13.2Query接口及其常用方法
●Query接口封装了对底层数据库表的查询请求。
●常用方法:
方法名称
方法描述
list()
获取满足查询条件的记录的集合
iterate()
获取满足查询条件的记录的Iterator对象,会使用缓冲提高查询数据性能
setMaxResults()
设置查询返回的总记录数
setFirstResult()
设置满足查询条件的第一条记录的位置
uniqueResult()
获取满足查询条件的唯一记录
13.3常用HQL语句
1.查询所有持久化对象
使用HQL语句可以查询所有持久化对象,此时查询结果是一个元素类型为持久化类List
示例:
2.对查询结果排序
可以使用orderby对查询结果设置按某个成员属性升序(“ASC”)或降序(“DESC”)排列。
示例:
3.查询部分属性
HQL除了可以查询实体外,也可以查询某些成员属性,此时查询结果是一个元素为Object数组的List
示例:
4.聚合查询
AVG():
求平均值,
SUM():
求总和,返回值类型为被求值的成员属性所对应的类型
COUNT(*):
统计实体数量
MAX():
求给定实体成员属性中的最大值
MIN():
求给定实体成员属性中的最小值
示例:
5.排除相同记录的DISTINCT
查询时,有时会得到重复的查询实体,此时可使用DISTINCT去除相同的实体对象
示例:
6.分组统计
可以将聚合函数和groupby及having结合起来在组中进行统计
示例:
7.关联查询
在HQL中,支持以下几种关联:
innerjoin/join:
返回两个关联实体中具有关联的所有字段
leftouterjoin/leftjoin:
返回对应内连接的所有对象及左边持久化类的末关联对象
rightouterjoin/rightjoin:
返回对应内连接的所有对象及右边持久化类的末关联对象
Leftouter/rightouter/innerjoinfetch:
查询主对象的同时也查询被关联的对象
8.范围查询
可以使用Between…and…查询某个范围之间的实体或实体属性
示例:
9.在给定值列表中查询
可以使用IN运算符在给定值列表中查找实体或实体属性
示例:
10.条件、and、or和逻辑非运算
可以使用where子句、and、or和not等运算符对查询设置条件
示例:
11.模糊查询
可以使用LIKE运算符进行模糊查询,”%”代表任意个字符,“_”代表一个字符。
示例:
12.空值查询
可以使用ISNULL运算符来判断成员属性是否为NULL
示例:
13.使用参数占位符
可以使用?
和名称设置参数占位符
示例:
14.批量更新
在hibernate3.0之后,hibernate提供了更新HQL来直接更新一条或多条记录
示例:
第14讲Criteria查询
14.1Criteria查询概述
在Hibernate中,提供了接口:
org.hibernate.Criteria,该接口对查询进行了抽象封装,通过该接口的相关方法可以将数据查询条件封装为一个对象,进而可以使用该对象进行数据查询。
14.2Criteria接口
Criteria接口对查询进行了抽象封装,使用它所提供的方法可以将查询条件封装为一个对象。
常用方法:
方法名称
方法描述
add()
对Criteria对象增加一个查询条件
addOrder()
对Criteria对象增加一个查询条件排序条件
list()
获取满足查询条件的记录的集合
CreateCriteria()
对持久化类创建Criteria对象
setMaxResults()
设置查询返回的总记录数
setFirstResult()
设置满足查询条件的第一条记录的位置
uniqueResult()
获取满足查询条件的唯一记录
14.3Restrictions类
Criteria查询条件可以使用org.hibernate.criterion.Restrictions类的静态方法来设置。
常用方法:
(返回Criterion类型的对象)
eq()、ne()、gt()、ge()、lt()、le()、between()、in()、like()、isNull()、isNotNull()、and()、or()、not()等
Restrictions.eq(“name”,”nch”);
Restrictions.like(“name”,”李%”);
Restrictions.between(“age”,newInterger(30),newInterger(39));
14.4Order类
可以使用org.hibernate.criterion.Order对象排序查询结果。
常用静态方法:
desc():
设置降序排列,返回值类型为Order
asc():
设置升序排列,返回值类型为Order
使用addOrder()方法来添加排序方式,例如:
Criteriacriteria=session.createCriteria(User.class);
criteria.addOder(Order.desc(id));
criteria.addOder(Order.asc(id));
第15讲Spring入门
15.1Spring概述
概念:
Spring是一个开源的以控制反转(InverseofControl,IoC)和面向切面(AspectOrientedProgramming,AOP)为核心的容器框架,用于简化企业级开发。
特点:
控制反转:
应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的。
容器创建的对象将通过依赖注入的方式注入到应用的组件中
面向切面:
Spring提供了良好的面向切面编程的特性,可以把横切问题模块化。
容器:
可在Spring中创建和管理应用中所用到的各种bean。
框架:
Spring可以将简单的组件配置组合成为复杂的应用,同时它还提供了很多基础功能,开发人员可以此基础上作进一步的开发。
15.2Spring的配置文件
Spring配置文件定义了应用程序中所用到的各种bean,描述了bean与bean之间的依赖关系。
配置文件使用
id:
bean的标识符,其它bean通过该标识符来引用bean,在整个容器中必须唯一。
class:
指定bean的实现类
配置文件的名字可以任意,并可保存在任何目录下,为便于移植,一般放在类路径下。
一个spring项目中,可以包含多个配置文件
15.3BeanFactory与ApplicationContext
•BeanFactory(IoC容器):
是Spring框架最核心的接口,是框架的基础结构,面向Spring本身。
它提供了高级IoC的配置机制,使管理不同类型的Java对象成为可能。
•ApplicationContext(应用上下文,spring容器):
建立在BeanFactory基础之上,提供了更多面向应用的功能,更易于创建实际应用。
面向使用Spring框架的开发者。
初始化Spring容器
方式一:
在类路径下寻代配置文件来实始化容器
ApplicationContextctx=newClassPathXmlApplicationContext(newString[]{"aa.xml","bb,xml"};
方式二:
在文件系统路径下寻代配置文件来实始化容器
ApplicationContextctx=newFileSystemPathXmlApplicationContext(new
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 2复习 复习