Hibernate的工作原理
Hibernate是一个开放源代码的对象关系映射(ORM)框架,它对JDBC进行了非常轻量级的对象封装,使得java程序员可以随心所欲的使用对象编程思维来操纵数据库。
工作原理:
1.读取并解析配置文件
2.读取并解析映射信息,创建SessionFactory
3.打开Sesssion
4.创建事务Transation
5.持久化操作
6.提交事务
7.关闭Session
8.关闭SesstionFactory
Hibernate的优点
1.对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
2.Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作
3、Hibernate使用Java反射机制而不是字节码增强程序来实现透明性。
4、Hibernate的性能好,映射的灵活性比较出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。
hibernate的核心类
Configuration、SessionFactory、Session。
Hibernate对象的三种状态
瞬时态:一个Java对象创建之后,还没新增到数据库之前的状态
特点:
(1)不和Session实例关联
(2)在数据库中没有和瞬时对象关联的记录
持久态:当调用save()或者是saveOrUpdate()方法之后的状态,保存到数据库的状态
特点:
(1)和Session实例关联
(2)在数据库中有和持久对象关联的记录
游离态:当调用session的Close方法或者清空session之后对象的状态
特点:
(1)本质上和瞬时对象相同
(2)只是比瞬时对象多了一个数据库记录标识值id.
Hibernate对象的三种状态转换
1.瞬时对象转为持久对象
(1)通过Session的save()和saveOrUpdate()方法把一个瞬时对象与数据库相关联,这个瞬时对象就成为持久化对象。
(2)使用fine(),get(),load()和iterater()方法查询到的数据对象,将成为持久化对象。
2.持久对象转为脱管对象
(1)当执行close()或clear(),evict()之后,持久对象会变为脱管对象。
3.脱管对象转为持久对象
(1)通过Session的update(),saveOrUpdate()和lock()等方法,把脱管对象变为持久对象。