添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

hibernate是一种ORM框架(全称为Object-Relative Database-Mapping,在java对象与数据库之间建立某种映射,以实现直接存取java对象(一般为POJO)), 与各种数据库,SQL语句打交道,是数据持久化的一种解决方案 。ORM框架是不同于MVC的另一种思想框架,适用范围也与MVC截然不同。类似功能的框架还有SUN的JDO、Oracle公司的TopLink、Apache的iBatis和openJPA等。

在商业系统的开发中,数据库持久化是比较核心的技术之一。传统的数据持久化编程中,需要使用 JDBC 并配合大量的 SQL 语句。 Connection statement resultset JDBCAPI SQL 夹杂在一起,开发效率都很低下。后来出现了 DAO 模式,所有的 JDBCAPI SQL 语句均移到了 DAO 层,但是仍然需要编写大量的 SQL 语句。开发业务复杂,数据表繁杂。

DAO 层其实很有规律。插入数据时,无非就是把 POJO 拆分成各种属性然后拼装为 SQL 语句,保存进数据库;读取数据时,无非就是用 SQL POJO 的各种属性从数据库读出来,然后拼装成 POJO 对象返回。而且 POJO 与数据库表、 POJO 属性与数据表的列,都存在着某种固定的映射关系。如果能够用程序自动生成 SQL 语句就好了。

ORM 就是做这种工作的框架。它通过配置文件或者使用 java 注解把 java 对象映射到数据库上,自动生成 SQL 语句并执行。 ORM 技术已经十分成熟,广泛应用于各种大规模的系统中。

Hibernate 的原理

JDBC 编程中,开发者通过在 DAO 层编写 INSERTSQL 语句插入数据库,编写 UPDATE SQL 更新数据库,编写 DELETE 语句删除数据,通过 SELECT 语句查询数据。在 hibernate 中原理也是一样的,只不过 hibernate 充当了 DAO 层,根基 POJO 与实体类的映射配置自动生成相应的 SQL 语句。从控制台输出可以看到 hibernate 生成的 SQL 语句。

JDBC 中的 SQL 语句是由开发者事先写好的,而 hibernate 中的 SQL 是动态生成的。因此如果实体类发生变化,则在 JDBC 中需要修改所有的相关 SQL 语句,这样会使工作量加大,而在 hibernate 只需要修改实体类配置。

Hibernate 的核心组件


在基于MVC设计模式的JAVA WEB应用中,Hibernate可以作为模型层/数据访问层。它通过配置文件(hibernate.properties或hibernate.cfg.xml)和映射文件(***.hbm.xml)把JAVA对象或PO(PersistentObject,持久化对象)映射到数据库中的数据库,然后通过操作PO,对数据表中的数据进行增,删,改,查等操作。
除配置文件,映射文件和持久化类外,Hibernate的核心组件包括以下几部分:
a) Configuration :用来读取Hibernate配置文件,并生成SessionFactory对象。
b) SessionFactory 接口 :产生Session实例工厂。
c) Session 接口 :用来操作PO。它有get(),load(),save(),update()和delete()等方法用来对PO进行加载,保存,更新及删除等操作。它是Hibernate的核心接口。
d) Query 接口 :用来对PO进行查询操。它可以从Session的createQuery()方法生成。
e) Transaction 接口 :用来管理Hibernate事务,它主要方法有commit()和rollback(),可以从Session的beginTrancation()方法生成。

Persistent Object


持久化对象可以是普通的Javabeans,惟一特殊的是它们与(仅一个)Session相关联。JavaBeans在Hibernate中存在三种状态:
1. 临时状态 (transient): 当一个JavaBean对象在内存中孤立存在,不与数据库中的数据有任何关联关系时,那么这个JavaBeans对象就称为临时对象(TransientObject)。
2. 持久化状态 (persistent): 当一个JavaBean对象与一个Session相关联时,就变成持久化对象(PersistentObject)
3. 脱管状态 (detached): 在这个Session被关闭的同时,这个对象也会脱离持久化状态,就变成脱管状态(DetachedObject),可以被应用程序的任何层自由使用,例如可以做与表示层打交道的数据舆对象(Data Transfer Object)。

Hibernate 的运行过程


Hibernate的运行过程如下:
A:应用程序先调用Configration类,该类读取Hibernate的配置文件及映射文件中的信息,并用这些信息生成一个SessionFactory对象。
B:然后从SessionFactory对象生成一个Session对象,并用Session对象生成Transaction对象;可通过Session对象的get(),load(),save(),update(),delete()和saveOrUpdate()等方法对PO进行加载,保存,更新,删除等操作;在查询的情况下,可通过Session对象生成一个Query对象,然后利用Query对象执行查询操作;如果没有异常,Transaction对象将 提交这些操作结果到数据库中。

Hibernate的运行过程:

1 、通过Configuration().configure(); 读取并解析hibernate.cfg.xml 配置文件

2 、由hibernate.cfg.xml 中的<mappingresource="com/xx/User.hbm.xml"/>读取解析映射信息。

3 、通过config.buildSessionFactory();// 得到sessionFactory。

4 、sessionFactory.openSession();// 得到session。

5 、session.beginTransaction();// 开启事务。

6 、persistent operate;

7 、session.getTransaction().commit();// 提交事务

8 、关闭session;

9 、关闭sessionFactory;

一、 Hibernate 工作 原理 : 读取并解析配置文件 读取并解析映射信息,创建SessionFactory 打开Sesssion 创建事务Transation 持久化操作 提交事务 关闭Session 关闭SesstionFactory 二、 Hibernate 有什么好处: 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。 Hibernate 是一 1、 hibernate 简介: hibernate 是一个开源框架,它是对象关联关系映射的框架,它对JDBC做了轻量级的封装,而我们java程序员可以使用面向对象的思想来操纵数据库。 hibernate 核心接口 session:负责被持久化对象CRUD操作 sessionFactory:负责初始化 hibernate ,创建session对象 configuration:负责配置并启... hibernate 简介: hibernate 是一个开源框架,它是对象关联关系映射的框架,它对JDBC做了轻量级的封装,使java程序员可以使用面向对象的思想来操纵数据库。 hibernate 核心接口 session:负责被持久化对象CRUD操作 sessionFactory:负责初始化 hibernate ,创建session对象 configuration:负责配置并启动hibernat 什么是JDBC? JDBC,全名 JAVA接(java DataBase Connectivity)技术的简称,由一组使用java语言编写的类与接口组成,可以为多种关系数据库提供统一访问。连接数据库后通过SQL来操作数据库。 JDBC的问题: 1、从连接效率上考虑,每一个操作都要重新连接数据库,对数据库造成较大的压力。 2、从代码上考虑,我们每次操作都要写编译以及对连接的控制,还要考虑到... Hibernate 入门案例(基于XML的操作方式) Hibernate 配置文件 详解 (基于xml的方式) Hibernate 常用api介绍 (事务,回顾脏读,不可重复读(行级,读更改),幻读(表级读新增)以及数据库隔离级别.并发事务的解决悲观锁和乐观锁 机制 ) 使用Hibernat... 1、 Hibernate 是什么 Hibernate 是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的ORM(Object-Relative Database-Mapping)框架, hibernate 可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibern... 首先 构造Configuration实例,加载 Hibernate .cfg.xml文件,创建SessionFactory对象,通过SessionFactory创建Session会话,这样就可以调用封装好的JDBC接口方法,访问数据库。在这过程中,还可以进行事务管理, Hibernate 框架的几个主要组件: |-Configuration类:负责加载 Hibernate 配置信息-Hibernat Hibernate 对象关系映射的实现 原理 1. 什么是ORM ORM的全称是Object Relational Mapping,即对象关系映射。它的实现思想就是将关系数据库中表的数据映射成为对象,以对象的形式展现,这样开发人员就可以把对数据库的操作转化为对这些对象的操作。因此它的目的... 1、什么是 Hibernate 的并发 机制 ?怎么去处理并发问题? Hibernate 并发 机制 : a、 Hibernate 的Session对象是非线程安全的,对于单个请求,单个会话,单个的工作单元(即单个事务,单个线程),它通常只使用一次, 然后就丢弃。 如果一个Session 实例允许共享的话,那些支持并发运行的,例如Http request,session beans将会导致出现资源 一、 Hibernate 如何链接数据库? 配置文件 Hibernate .cfg.xml文件中定义了和数据库进行连接的信息,包括数据库方言,jdbc驱动,用户名,密码和URL等。Configuration类借助dom4j的xml解析器进行xml的解析设置环境,然后使用这些环境属性来生成sessionfactory。这样sessionfactory生成的se... Hibernate 4工作 原理 Hibernate 是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架, hibernate 可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate 可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Se... 一、 Hibernate 是对JDBC进一步封装 原来没有使用Hiberante做持久层开发时,存在很多冗余,如:各种JDBC语句,connection的管理,所以出现了 Hibernate 把JDBC封装了一下,我们不用操作数据,直接操作它就行了。 二、我们再从分层的角度来看 典型的三层架构:表示层,业务层,还有持久层。Hiberante也是持久层的框架,而且持...