1、框架的概念
它是我们应用中局部或者整个的可重用设计,是我们应用的骨架。
它封装了很多的细节,使我们开发起来变得简单,从而提高我们的开发效率。
2、三层架构
web层 表现层
作用:
封装请求参数
给用户展示数据
service层 业务层
作用:
处理业务逻辑,实现需求
dao层 持久层
作用:
和数据库交互。
3、持久层实现保存和查询一个学生,你会的方式?
JDBC:很痛苦
保存一个学生
Connection conn = getConnection();
String sql = "insert into student(name,gender,birthday) values(?,?,?)";
PreparedStatement pstm = conn.prepareStatement(sql);
//给占位符赋值
int res = pstm.executeUpdatea();
查询学生信息
Connection conn = getConnection();
String sql = "select * from student where name like ? ";
PreparedStatement pstm = conn.prepareStatement(sql);
//给占位符赋值
ResultSet rs = pstm.executeQuery();
List<Student> list = new ArrayList<Student>();
while(rs.next()){
String name = rs.getString("name");
String gender = rs.getString("gender");
Date birthday = rs.getDate("birthday");
Student s = new Student();
s.setName(name);
s.setGender(gender);
s.setBirthday(birthday);
list.add(s);
}
DBUtils:很麻烦
保存一个学生:
QueryRunner qr = new QueryRunner(DataSource);
String sql = "insert into student(name,gender,birthday) values(?,?,?)";
qr.update(sql,s.getName(),s.getGender(),s.getBirthday());
查询学生信息:
QueryRunner qr = new QueryRunner(DataSource);
String sql = "select * from student where name like ? ";
qr.query(sql,new BeanListHandler<Student>(Student.class),name);
create table student(
name varchar(100),
gender varchar(10),
birthday date
........
);
public class Student{
private String name;
private String gender;
private Date birthday;
....
//get and set
}
你想怎么办?
想一行搞定
session.save(student);=========>保存了学生到数据库 转换成sql语句
session.get(id);===============>查询到了一个学生 转换成sql语句
想操作实体类就相当于操作数据库表。
要想实现上面的想法:
建立数据库表和实体类之间的关系
用什么建立:
用配置文件建立关系
用哪个配置文件:
properties
配置方式是键值对
xml:我们选这个作为实体类和数据表建立关系的配置文件
配置方式是层级关系
配置文件的内容:
实体类名称和数据库表名称的对应关系。
实体类中属性和数据库表字段的对应关系。
举例save方法:
Hibernate做了:
它就会解析XML,根据实体类对象生成SQL语句
insert into student(name,gender,birthday) values(?,?,?)
4.Hibernate框架的概述
1. Hibernate框架的概述
* Hibernate称为
* Hibernate是一个开放源代码的对象关系映射(ORM)框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
* Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用。
* Hibernate是轻量级JavaEE应用的持久层解决方案,是一个关系数据库ORM框架
记住:Hibernate是一个持久层的ORM框架!!!
什么是ORM(对象关系映射)
1. ORM映射:Object Relational Mapping
* O:面向对象领域的Object(JavaBean对象)
* R:关系数据库领域的Relational(表的结构)
* M:映射Mapping(XML的配置文件)
2. 简单一句话:Hibernate使程序员通过操作对象的方式来操作数据库表记录
5、Hibernate搭建环境
去hibernate官网下载开发包
搭建步骤:
前期准备:
数据库表结构
实体类对象
第一步:导入jar包。
必须jar包一共有13个
hibernate开发包中有9个
日志组件有3个
mysql数据库驱动1个
第二步:建立对应关系
实体类和数据库表的对应关系。
创建映射文件:
在实体类所在的包下创建一个名称为实体类名称.hbm.xml文件
第三步:创建Hibernate主配置文件
在类的根路径下创建一个名称为hibernate.cfg.xml
6.技术分析之:Hibernate常用的配置文件
Hibernate配置文件之映射配置文件
1. 映射文件,即Stu.hbm.xml的配置文件
* <class>标签 -- 用来将类与数据库表建立映射关系
* name -- 类的全路径
* table -- 表名.(类名与表名一致,那么table属性也可以省略)
* catalog -- 数据库的名称,基本上都会省略不写
* <id>标签 -- 用来将类中的属性与表中的主键建立映射,id标签就是用来配置主键的。
* name -- 类中属性名
* column -- 表中的字段名.(如果类中的属性名与表中的字段名一致,那么column可以省略.)
* length -- 字段的程度,如果数据库已经创建好了,那么length可以不写。如果没有创建好,生成表结构时,length最好指定。
* <property> -- 用来将类中的普通属性与表中的字段建立映射.
* name -- 类中属性名
* column -- 表中的字段名.(如果类中的属性名与表中的字段名一致,那么column可以省略.)
* length -- 数据长度
* type -- 数据类型(一般都不需要编写,如果写需要按着规则来编写)
* Hibernate的数据类型 type="string"
* Java的数据类型 type="java.lang.String"
* 数据库字段的数据类型 <column name="name" sql-type="varchar"/>
Hibernate配置文件之核心配置文件
1. 核心配置文件的两种方式(了解)
* 第一种方式是属性文件的形式,即properties的配置文件
* hibernate.properties
* hibernate.connection.driver_class=com.mysql.jdbc.Driver
* 缺点
* 不能加载映射的配置文件,需要手动编写代码去加载
* 第二种方式是XML文件的形式,开发基本都会选择这种方式
* hibernate.cfg.xml
* <property name="hibernate.connection.driver_class" >com.mysql.jdbc.Driver</property>
* 优点
* 格式比较清晰
* 编写有提示
* 可以在该配置文件中加载映射的配置文件(最主要的)
2. 关于hibernate.cfg.xml的配置文件方式
* 必须有的配置
* 数据库连接信息:
hibernate.connection.driver_class -- 连接数据库驱动程序
hibernate.connection.url -- 连接数据库URL
hibernate.connection.username -- 数据库用户名
hibernate.connection.password -- 数据库密码
* 方言:
hibernate.dialect -- 操作数据库方言
* 可选的配置
* hibernate.show_sql -- 显示SQL
* hibernate.format_sql -- 格式化SQL
* hibernate.hbm2ddl.auto -- 通过映射转成DDL语句
* create -- 每次都会创建一个新的表.---测试的时候
* create-drop -- 每次都会创建一个新的表,当执行结束之后,将创建的这个表删除.---测试的时候
* update -- 如果有表,使用原来的表.没有表,创建一个新的表.同时更新表结构.
* validate -- 如果有表,使用原来的表.同时校验映射文件与表中字段是否一致如果不一致就会报错.
* 加载映射
* 如果XML方式:<mapping resource="cn/itcast/hibernate/domain/User.hbm.xml" />
7、常用对象介绍
Configuration
SessionFactory
Session
Transaction
8、满足SessionFactory使用原则——抽取HibernateUtil
9、生成Hibernate的编码模板
10、使用Hibernate实现增删改查(查一个)
作业:
实现客户的增删改查
实现联系人的增删改查