Hibernate(一)概述

来源:互联网 发布:淘宝代销怎么终止合同 编辑:程序博客网 时间:2024/06/05 12:42

Hibernate3框架(持久层)
Hibernate:是一种ORM映射工具,能够建立面向对象的域模型和关系数据模型之间的映射,全自动ORM的

关于ORM:http://blog.csdn.net/zooooooh/article/details/78504929

实现作用:
1. 主要用实现Java对象和数据库的表之间的映射,除此之外还提供数据查询和获取数据的方法
2. Hibernate可以大幅度减少开发时手动编写SQL语句和JDBC代码的时间
3. Hibernate可以完全隔离数据库,解耦项目与数据库的依赖关系

PO(Persistent Object,持久化对象):
PO=POJO+XML映射文件

为了使用Hibernate进行持久化操作,通常有如下的操作步骤:
(1)开发持久化类,由POJO加映射文件组成。
(2)获取Configuration。
(3)获取SessionFactory。
(4)获取Session,打开事务。
(5)用面向对象方式操作数据库。
(6)关闭事务,关闭Session。
随PO和Session的关联关系,PO可有以下的3种状态。
(1)瞬态:如果PO实例从未与Session实例关联过,该实例处于瞬态状态。
(2)持久化:如果PO 实例与Session实例关联起来,且该实例关联到数据库的记录。
(3)脱管:如果PO实例曾经与Session实例关联过,但是因为Session的关闭等原因,PO实例脱离了Session 的管理,这种状态被称为脱管状态。

对PO的操作必须在Session的管理下才能同步到数据库,Session由SessionFactory 工厂产生,SessionFactory是数据库编译后的内存镜像,通常一个对应一个SessionFactory对象。SessionFactory对象是由Configuration对象生成,Configuration负责加载Hibernate配置文件。
上面的使用Hibernate添加了一条记录,对比Hibernate和JDBC两种操作数据库的方式,不难发现Hibernate有两个显著的优点。
(1)不再需要编写SQL语句,而是允许采用OO方式来访问数据库。
(2)JDBC访问过程中大量的checked异常被包装成Hibernate的Runtime异常,从而不再要求程序必须处理所有异常。

hibernate三大状态(重要):
瞬时状态:对象由new操作符创建,尚未与Session关联的对象被认为处于瞬态。瞬态对象不会被持久化到数据库中,也不会被赋予持久化标志。

持久化状态:持久化实例在数据库中有对应的记录,并拥有一个持久化标志。持久化对象必须与指定的Session关联。Hibernate会检测到处于持久化状态对象的改动,在当前操作执行完成式将对象数据写回数据库中,开发者不用手动执行update更新数据库。

托管状态:某个实例曾经处于持久化状态,但随着与之关联的Session被关闭,该对象就变成脱管状态。脱管对象的引用依然有效,对象可继续被修改。如果重新让脱管对象与某个Session关联,该Session将重新转换为持久化状态,而脱管期间的改动也可被写入数据库。

原创粉丝点击