Hibernate
1、Hibernate 介绍
- 是一个开源的轻量级框架,基于MVC的dao层,注重于对数据库的操作,主要实现了java程序员通过面向对象的方法去控制数据库,也就是CURD操作!
2、Hibernate 中对象的三种状态(了解)
- a>临时状态:刚刚使用new语句创建的对象,不处于session缓存中
- b>持久化状态:处于session缓存中的对象
- c>游离状态:已经持久化,但不处于session缓存中
图示:
简单图示:
3、Hibernate的配置(重点)
- 第一个:配置实体类的配置文件
- 特性:名字可自拟,位置自定义的xml文件
- 配置条件:需要一个dtd文件,也可以引用网上的
- 下载地址:http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd
配置如图:
第二个:配置hibernate的核心配置文件
特性:名字固定为hibernate.cfg.xml,位置固定在src根目录下(可自拟,但是在加载时,需要指定)
配置条件:需要一个dtd文件,也可以引用网上的
下载地址:http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd
配置如图:
4、Hibernate 核心接口(重点)
- a>SessionFactory :负责创建session对象 固而称之为 Session工厂类
- b>Session : 负责被持久化的对象的CURD操作
- c>Configuration:负责配置启动核心配置文件,创建sessionfactory
- d>Transaction:负责事物相关事件
- e>Query和Criteria接口:负责执行各种对数据库的查询
5、Hibernate 的步骤
- 通过Configuration config = new Configuration().configure();//读取并解析hibernate.cfg.xml配置文件
- 由hibernate.cfg.xml中的读取并解析映射信息
- 通过SessionFactory sf = config.buildSessionFactory();//创建SessionFactory
- Session session = sf.openSession();//打开Sesssion
- Transaction tx = session.beginTransaction();//创建并启动事务Transation
- persistent operate操作数据,持久化操作
- tx.commit();//提交事务
- 关闭Session
- 关闭SesstionFactory
6、为什么要用Hibernate
Hibernate 对jdbc访问数据进行封装,简化代码,通过ORM思想简化dao层的编码工作,利用反射机制完成一系列的操作,,性能好,支持各种从一对一到多对多的负责关系
提问:什么是ORM思想?即Object Relational Mapping
答:对象关系映射!其实相当于创建一个可以使用“虚拟对象数据库”,通俗来讲就是可以通过操控对象来操控对应的数据库的这样一个渠道
7、Hibernate 是如何延迟加载?Get和load方法的区别
Get和load最明显的区别就是:
如果get方法没找到返回null
Load方法没找到抛一个ObjectNotFoundExeception异常,它会使用代理方法延迟加载
总的来说一句话:load方法认为数据库中一定存在此数据,可以放心的延迟加载,如果没有只会抛异常;而get方法,则一定要获取到真实数据之后再做决定,没有就返回null.
8、hibernate 的CURD操作
上面说了那么多,实际操作一下吧
1、先来使用hibernate建立一张表,我们知道,一个表对应一个实体类,所以我们需要一个实体类,对应的是实体类的配置文件,hibernate的核心配置文件中
<property name="hbm2ddl.auto">update</property>
会给我们创建表
代码如图: