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也是持久层的框架,而且持...