第21章_Hibernate的高级技术 试验设计与数据处理教案(第二版)课件

合集下载

hibernate课件

hibernate课件
JAVA项目实践
使用Hibernate完成对象持久化
JAVA项目实践
回顾
JSP、SERVLET、EL、JSTl、过滤器
如何使用MVC模式组织Java Web应用?
程序设计过程?
JAVA项目实践
预习检查
为什么需要Hibernate? Hibernate是什么? 使用Hibernate的步骤是?
JAVA项目实践
public User1() { }
<hibernate-mapping> <class dynamic-insert="false" dynamicupdate="false" mutable="true" name="er1" optimisticlock="version" polymorphism="implicit" select-before-update="false" table="user"> <id column="id" name="id" type="ng.Integer"> <generator class="native"/> </id> <property column="name" name="name" type="ng.String"/> <property column="pwd" name="pwd" type="ng.String"/> </class> </hibernate-mapping>

Hibernate总结PPT教学课件

Hibernate总结PPT教学课件
Hibernate数据加载方式
1、即时加载 lazy=“false”; 2、延迟加载 lazy=“ture”; 特点:在需要使用时对数据进行加载,节约资源
HQL联表查询中fetch的使用 本地SQL查询
1、在实体映射文件中编写
2、在项目中进行调用
2020/12/11
9
第5章:Criteria查询
Hibernate学习总结
2020/12/11
1
第1章: Hibernate入门
数据持久化ORM 在项目中使用Hibernate
2020/12/11
2
数据持久化ORM
ORM(Object Relationship Mapping)
内存
Hibernate 项目
ORM
数据库
2020/12/11
3
2020/12/11
6
第3章: HQL实用技术
使用HQL语句的步骤:
1、得到Session 2、编写HQL语句 3、创建Query对象 4、执行查询
HQL中占位符的使用
1、使用‘?’占位符 为占位符设值 eq: query. setType(index,value); index从0开始 2、命名参数占位符 “:”后面必须为实体类的属性 设置值: QueryProperities qp = new QueryProperities();
Criteria查询
原理:根据实体类的类型进行查询 Criteria查询时条件设置:使用add()方法 1、 使用Restriction
Restriction. le(“实体类对象属性”,值) //小于 Restriction. ge(“实体类对象属性”,值) //大于 2、使用Example(将对象中不为空的属性作为条件) 将条件封装到实体对象,在使用该对象查询 Example. create(实体类对象);

试验设计与数据处理(第二版)-李云雁(全书pt)

试验设计与数据处理(第二版)-李云雁(全书pt)
i 1
2
n

2 x ( x ) i /n i 1 2 i i 1
n
n
2 x ( x ) i /n i 1 2 i i 1 n n
s
( xi x)
i 1
n
2
n 1

n 1
标准差↓,精密度↑
③方差(variance) 标准差的平方:

样本方差( s2 ) 总体方差(σ2 ) 方差↓,精密度↑
①目的:检验服从正态分布数据的算术平均值是否与给定值 有显著差异
②检验步骤:

计算统计量:
x 0 t s
n
服从自由度 df n 1 的t分布(t-distribution)
0 ——给定值(可以是真值、期望值或标准值)

双侧检验 : 若 t t
2
则可判断该平均值与给定值无显著差异,否则就有显著差异
试验设计与数据处理
(第二版)
Experiment Design and Data Processing


0.1 试验设计与数据处理的发展概况

20世纪20年代,英国生物统计学家及数学家费歇 (R.A.Fisher)提出了方差分析
20世纪50年代,日本统计学家田口玄一将试验设计中应用 最广的正交设计表格化 数学家华罗庚教授也在国内积极倡导和普及的“优选法” 我国数学家王元和方开泰于1978年首先提出了均匀设计

绝对误差估算方法:
最小刻度的一半为绝对误差; 最小刻度为最大绝对误差; 根据仪表精度等级计算: 绝对误差=量程×精度等级%
1.2.2 相对误差(relative error)
(1)定义:

传智播客Hibernate课件

传智播客Hibernate课件

北京传智播客教育
—高级软件人才实作培训专家 ! Hibernate入门
9.通过id查询客户信息
北京传智播客教育
—高级软件人才实作培训专家 ! Hibernate入门
10. 查询所有的客户信息
北京传智播客教育
—高级软件人才实作培训专家 ! Hibernate入门
}
北京传智播客教育
—高级软件人才实作培训专家 ! Hibernate入门
3 创建对象-关系映射文件 Hibernate 采用 XML 格式的文件来指定对象和关系数据之间的映射. 在运行时 Hibernate 将根据这个映射文件来生成各种 SQL 语句 映射文件的扩展名为 .hbm.xml 这里Customer.hbm.xml文件
date
timestamp
BIRTHDAY
REGISTERED_TI ME
DATE
TIMESTAMP
汉语(java)
英语(hibernate)
北京传智播客教育
日语(sql)
—高级软件人才实作培训专家 ! Hibernate入门
北京传智播客教育
2 创建表和对应的javaBean文件(持久化类)
create table customer ( id int primary key, name varchar(12), age int, des text ) public class Customer { private private private private Integer id; String name; Integer age; String des;
char
boolean ng.String byte[]
character

Hibernate-课件

Hibernate-课件
ORM设计模式——特点(3/3)
自动透明映射:对象关系型数据库中表 不丢失数据库内的关联性,增加面向对象技术的继
承性和多态性 对关系数据库结构的简单改动不影响面向对象代码
部分
Web Technology
Hibernate Outline(1/2)
基于ORM的框架 基于关系数据库的面向对象数据持久层设计 提供Java类到数据库中表的映射 提供数据查询(HQL)和恢复机制
public void setId(String s) { id = s; } public void setLevel(int l) { level = l; } public void setSumAmount(double d) { sumAmount = d; } }
Web Technology
解耦合与持久层
什么是解耦合(Decoupling) 解耦合实例 DAO模式介绍 什么是持久层(Persistence Layer)
Web Technology
DAO模式介绍(1/2)
DAO (Data Access Object) = D+A+O - Data 实际数据库中的数据 - Accessor 实现数据访问与业务逻辑分离 - Domain Object 实现业务数据的对象化封装
stmt_promotion.executeQuery(); double ratio = 1; if(rset_promotion.next()) ratio = rset_promotion.getDouble(1); //计算最终支付金额 amount *= ratio;
Web Technology
解耦合实例——业务逻辑与DB访问未分离(5/6)

第20章_Hibernate的查询与更新技术 试验设计与数据处理教案(第二版)课件

第20章_Hibernate的查询与更新技术 试验设计与数据处理教案(第二版)课件

性格决定命运, 专注成就人生
cjgong
1-4
掌握HQL和SQL技术
• 关联查询 • 实现聚合函数查询 • Update和Delete语句:更新持久化对象 • Insert语句:插入记录 • 掌握命名查询 • 使用SQL查询
1-5
小结
本章介绍了Hibernate框架支持的查询和更新技术 。在Hibernate框架中可以使用标准查询API、HQL和 SQL来查询数据。其中标准查询API是一套符合Java语 法的查询API,而HQL和SQL在语法上非常类似,但 HQL查询的是持久化对象,而SQL查询的是表。
Hibernate的查询与更新技术
系列二十:关于Hibernate的高级知识——查询和更新
1-2
1-3
掌握HQL和SQL技术
• 实例:使用HQL的第一个例子 • From子句:简化实体Bean类名 • Select子句:选择返回属性 • Where子句:指定条件 • 使用命名参数 • 使用Query进行分页 • 实例:使用HQL实现Web分页功能 • 使用HQL进行排序和分组
如果想更新数据库中的记录,可以使用HQL和 SQL的insert、delete和update语句对数据表的记录进 行增、删和改操作。除此之外,HQL还支持很多高级 特性,如排序和分组QL 保存在映射文件中,以供程序调用。
1-6

Hibernate实验二

Hibernate实验二

Hibernate实验二实验内容:1.双向多对多关联映射2.Hibernate检索方式实验目的:1.掌握多对多关联关系的配置2.掌握cascade、inverse属性的使用3.掌握HQL查询的使用步骤4.掌握QBC查询的使用步骤一、双向多对多关联映射以学生课程表为例,一个学生可以选修多门课程,一门课程也可以被多位学生选修。

1.建立数据库表学生表:create table student( sid int not null auto_increment primary key,sname varchar ( 16 ),sage varchar ( 16 ));课程表:create table course( cid int not null auto_increment primary key,cname varchar ( 16 ));关联表:create table student_course_link( sid int not null,cid int not null,primary key (sid,cid),foreign key (sid) references student (sid),foreign key (cid) references course (cid));2.创建Java项目mtm,并添加Hibernate包创建many.to.many.bean包,产生的实体类和映射文件将放到此包下。

3.使用Hibernate逆向工程自动产生实体类和映射文件利用上次实验的方法,找到数据库下的表。

使用Hibernate逆向工程产生实体类和映射文件。

请选择“many-to-many”。

选择双向多对多,出现三个表。

产生的实体类和映射文件如下:学生类:public class Student implements java.io.Serializable {// Fieldsprivate Integer sid;private String sname;private String sage;p rivate Set courses = new HashSet(0);//省略setter和getter课程类:public class Course implements java.io.Serializable {// Fieldsprivate Integer cid;private String cname;p rivate Set students = new HashSet(0);//省略setter和getterStudent.hbm.xml映射文件<?xml version="1.0"encoding="utf-8"?><!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""/hibernate-mapping-3.0.dtd"><!--Mapping file autogenerated by MyEclipse Persistence Tools--><hibernate-mapping><class name="many.to.many.bean.Student"table="student"catalog="test"><id name="sid"type="ng.Integer"><column name="sid"/><generator class="native"/></id><property name="sname"type="ng.String"><column name="sname"length="16"/></property><property name="sage"type="ng.String"><column name="sage"length="16"/></property><set name="courses"table="student_course_link"catalog="test" cascade="all"><key><column name="sid"not-null="true"/></key><many-to-many entity-name="many.to.many.bean.Course"><column name="cid"not-null="true"/></many-to-many></set></class></hibernate-mapping>Course.hbm.xml映射文件<?xml version="1.0"encoding="utf-8"?><!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""/hibernate-mapping-3.0.dtd"><!--Mapping file autogenerated by MyEclipse Persistence Tools--><hibernate-mapping><class name="many.to.many.bean.Course"table="course"catalog="test"><id name="cid"type="ng.Integer"><column name="cid"/><generator class="native"/></id><property name="cname"type="ng.String"><column name="cname"length="16"/></property><set name="students"inverse="true"table="student_course_link" catalog="test"><key><column name="cid"not-null="true"/></key><many-to-many entity-name="many.to.many.bean.Student"><column name="sid"not-null="true"/></many-to-many></set></class></hibernate-mapping>4.编码测试,插入一组数据package many.to.many.test;import java.util.HashSet;import java.util.Set;import many.to.many.bean.Course;import many.to.many.bean.Student;import many.to.many.sf.HibernateSessionFactory;import org.hibernate.Session;import org.hibernate.Transaction;public class Test {public static void main(String[] args) {//学生对象Student s1=new Student();s1.setSname("Tom");s1.setSage("21");Student s2=new Student();s2.setSname("Jerry");s2.setSage("20");//课程对象Course c1=new Course();c1.setCname("C++");Course c2=new Course();c2.setCname("Java");Course c3=new Course();c3.setCname("C#");Set students=new HashSet();students.add(s1);students.add(s2);Set courses=new HashSet();courses.add(c1);courses.add(c2);courses.add(c3);//建立双向关联s1.setCourses(courses);s2.setCourses(courses);c1.setStudents(students);c2.setStudents(students);c3.setStudents(students);Session session=HibernateSessionFactory.getSession();Transaction tx=session.beginTransaction();//请将Student.hbm.xml中的set标签的cascade设置为true,这样保存Student 对象的时候会级联保存Course,//否则在向关联表插入数据的时候,由于找不到参照的Course数据会报异常//Exception in thread "main"org.hibernate.TransientObjectException://object references an unsaved transient instance//- save the transient instance before flushing: many.to.many.bean.Coursesession.save(s1);session.save(s2);mit();HibernateSessionFactory.closeSession();}}成功插入:二、H ibernate检索在上面实验的数据基础之上,学习HQL与QBC检索的使用步骤。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Hibernate的高级技术
系列二十一:关于Hibernate的高级知识——事务处理机制
课程安排
• 学习事务 • 学习锁(Locking)和应用查询缓存(Query Cache) • 学习拦截器、事件和过滤器 • 小结
1-2
学习事务
• 了解事务 • 学习事务的隔离等级 • 学习Hibernate所支持事务管理 • 掌握基于JDBC的事务管理 • 掌握基于JTA的事务管理
1-3

1-4
1-5
小结
本章介绍了Hibernate的一些高级技术。在基于数 据库的应用中,事务是必不可少的技术,DBMS通过对 事务的管理,可以有效地解决数据的各种冲突。 Hibernate本身并不支持事务,而是对各种级别的事务 进行了封装,如在本章介绍了Hibernate对JDBC和 JTA两个级别的事件事务进行了封装。谈到事务,就要 涉及锁的概念。实际上,事务从技术层面上讲,是通过 锁机制来解决数据冲突的。Hibernate同样也对锁机制 进行了支持,在Hibernate中支持悲观锁和乐观锁。
1-6
小结
为了干预Hibernate在执行不同动作时的行为,在 Hibernate中提供了拦截器和事件机制。这两种机制类 似,只是事件机制更灵活,更强大。通过这两个机制, 可以在Hibernate动作执行之前或之后执行由用户自己 编写的代码。如在持久化对象之前,可以在拦截器或事 件中检查持久化对象是否满足持久化的条件,如果不满 足,可以取消持久化。除此之外,还可以利用 Hibernate的过滤器事件对要装载的持久化对象进行过 滤,以免装载过多的持久化对象。过滤器相当于数据库 中的视图。
1-7
性格决定命运, 专注成就人生
cjgong
相关文档
最新文档