计应134(实验班) 李佳鸿
Hibernate简介
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来 操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命 意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Hibernate体系结构如下图所示:
ORM基本概念
对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。
面向对象是从软件工程基本原则(如耦合、聚合、封装)的基础上发展起来的,而关系数据库则是从数学理论发展而来的,两套理论存在显著的区别。为了解决这个不匹配的现象,对象关系映射技术应运而生。
对象关系映射(Object-Relational Mapping)提供了概念性的、易于理解的模型化数据的方法。ORM方法论基于三个核心原则: 简单:以最基本的形式建模数据。 传达性:数据库结构被任何人都能理解的语言文档化。 精确性:基于数据模型创建正确标准化了的结构。 典型地,建模者通过收集来自那些熟悉应用程序但不熟练的数据建模者的人的信息开发信息模型。建模者必须能够用非技术企业专家可以理解的术语在概念层次上与数据结构进行通讯。建模者也必须能以简单的单元分析信息,对样本数据进行处理。ORM专门被设计为改进这种联系。简单的说:ORM相当于中继数据。具体到产品上,例如ADO.NET Entity Framework。DLINQ中实体类的属性[Table]就算是一种中继数据。如下图:
HQL查询
Hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL。但是不要被语法结构 上的相似所迷惑,HQL是非常有意识的被设计为完全面向对象的查询,它可以理解如继承、多态 和关联之类的概念。它根据映射文件配置的映射信息,把HQL查询语句转换为SQL查询语句,并且把JDBC ResultSet结果映射为关联的对象图。
hql语句:
它具有以下功能:
(1)在查询语句中设定各种查询条件;
(2)支持投影查询;
(3)支持分页查询,支持连接查询;
(4)支持分组查询,允许使用having和group by关键字;
(5)提供内置聚集函数,例如sum(),min(),max();
(6)能够调用用户定义的sql函数;
(7)支持子查询,即嵌入式查询;
(8)支持动态绑定参数。
使用HQL查询步骤如下:
(1)获得hibernate session对象;
(2)编写HQL查询语句字符串;
(3)以HQL语句作为参数,调用Session的creatQuery方法作为查询对象;
(4)如果HQL语句包含参数,则用Query的setXXX方法为参数赋值;
(5)调用Query对象的list等方法返回查询结果列表。
from子句
from是最简单和最基本HQL语句。from关键字后紧跟持久化类的类名。例如:from User as u。
select子句
select子句用于选择指定的属性或直接选择某个实体,当然,select选择的属性必定是from后持久化类包含的属性。例如:select u.userDesc from User u;
where子句
where子句用于筛选选择的结果,缩小选择的范围,如果没有持久化实例命名别名,可以直接使用属性名来应用属性,例如:select *from User where usrDesc like '李%';
聚集函数
avg:计算属性的平均值;
count:统计选择对象的数量;
max:统计属性值的最大值;
min:统计属性值的最小值;
sum:计算属性值的总和。
Struts2请求处理示意图: