1.Hibernate框架的作用和优点
Hibernate主要负责对数据库进行访问操作
Hibernate框架是对JDBC技术进行了封装。
a.使用JDBC进行数据库操作具有以下缺点:
--需要编写大量复杂的SQL语句
--需要设置大量的?参数值
--需要将ResultSet记录转换成POJO对象
--数据库变更某些特殊功能需要改变SQL,简称移植性差。例如分页查询、主键生成方法、数据库函数等
b.Hibernate解决上述JDBC的不足
--自动生成SQL语句
--自动设置?参数值
--自动将ResultSet记录映射成POJO对象
--采用一致的方法对数据库操作。例如分页查询和主键生成控制。移植性比较好。
save(admin);//insert语句
update(admin);//update语句
Admin admin =(Admin)load();//findById语句
2.Hibernate框架设计原理(思想)
Hibernate是采用ORM思想对JDBC进行封装的设计。
ORM:Object Relation Mapping, 对象关系映射。指的是解决Java对象和关系数据库数据之间的映射问题。
Hibernate框架是ORM的一种实现,解决了对象和数据库数据映射问题。在数据库添加或更新时,可以将一个对象自动写入或更新数据表;查询时,可以将记录自动封装成对象返回。这些操作在中间执行时所涉及的一些细节开发者不用参与和关注。
3.Hibernate框架体系结构
Hibernate主要由以下几部分构成
a.hibernate.cfg.xml(1个)
指的是hibernate框架的主配置文件。可以配置数据库连接参数、hibernate框架参数等。
b.POJO实体类(n个)
指的是与数据库对应的实体类,用于封装数据库记录的对象类型。
c.hbm.xml映射描述文件(n个)
指定了实体类和数据表的对应关系,类中属性和数据表字段之间对应关系。
d.Hibenate底层的API(jar包)
主要是对hbm.xml解析,根据写出的内容,动态生成SQL语句,自动将属性和字段映射。
4.Hibernate框架常用API
a.Configuration
负责加载hibernate.cfg.xml主配置信息,同时也可以加载hbm.xml信息。
b.SessionFactory
负责创建Session对象,对JDBC的connection对象的封装。
c.Session
负责执行增删改操作.提供了save,update,delete等方法。
d.Transaction
负责事务控制。默认情况下,Hibernate不会自动提交,因此需要事务控制才能对数据库更新。
e.Query
负责执行特殊查询。
5.Hibernate框架基本应用
1)引入hibernate开发包、数据库驱动包
2)引入hibernate主配置文件hibernate.cfg.xml
3)添加实体类Cost
4)添加Cost.hbm.xml映射描述
5)根据Hibernate提供的常用API执行增删改查操作
//根据Class类型的主键值查询
session.load(Class,主键值)
session.get(Class,主键值)
//根据Object对象的主键值删除
session.delete(Object);
//将Object对象更新到数据库
session.update(Object);
//将Object对象插入到数据库
session.save(Object);
6.Hibernate映射类型
在hbm.xml文件中,定义属性和字段映射时,使用了type属性,该属性用于指定映射类型,负责属性值和字段值之间的相互转化。
在Hibernate框架中type属性允许使用两种格式:一种是Java类型,另一种是Hibernate类型(推荐)。
Hibernate映射类型如下:
整数映射:byte,short,integer,long
浮点数:float,double
字符串: string
日期:date (年月日)
时间: time (小时分钟秒)
日期+时间: timestamp
布尔类型:yes_no,true_false
(可以完成一个布尔属性和字符之间的转换)
===========================
Java对象(sql.Date属性) <--date-->
YYYY-MM-DD
Java对象(util.Date属性) <--time-->
HH:MM:SS
Java对象(TimeStamp属性) <--timestamp--> YYYY-MM-DD HH:MM:SS
Java对象(boolean属性) <--yes_no-->
Y|N
Java对象(boolean属性) <--true_false--> T|F
7,Hibernate对象状态切换