您的位置:首页 > 编程语言 > Java开发

Hibernate 学习入门2

2015-10-13 15:33 295 查看

Hibernate概述

Hibernate是对Java中的对象关系映射(ORM)解决方案,它由加文·金(Gavin King)在2001年提出并创建的一个开源持久框架。它是一个强大的,高性能的对象关系持久性和对任何Java应用程序的查询服务。

Hibernate能够映射Java类到数据库表、Java数据类型到SQL数据类型以及完成95%的通用数据持久化相关的编程任务,解放了开发者。

Hibernate在传统的Java对象和数据库服务器处理持久化的基础上,加入适当的O/R机制和模式,这些对象可应用在所有工作对象之间。



Hibernate 优点:

Ø  Hibernate使用XML文件处理映射的Java类和数据库表,无需编写任何一行代码。

Ø  提供了简单的API,用于直接从数据库中存储和检索Java对象。

Ø  如果数据库或任何表有变化,那么只需要修改XML文件的属性。

Ø  抽象掉不熟悉的SQL类型,并提供我们熟悉的Java对象。

Ø  Hibernate不要求应用服务器进行操作。

Ø  操纵数据库与对象的复杂关联。

Ø  尽量减少与智能读取策略数据库的访问。

Ø  提供数据的简单查询。

支持的数据库:

Hibernate支持几乎所有主要的RDBMS。以下是Hibernate支持的几个数据库引擎列表。

Ø  HSQL Database Engine

Ø  DB2/NT

Ø  MySQL

Ø  PostgreSQL

Ø  FrontBase

Ø  Oracle

Ø  Microsoft SQL Server Database

Ø  Sybase SQL Server

Ø  Informix Dynamic Server

支持的技术:

Hibernate支持各种各样的其他技术,包括以下内容:

Ø  XDoclet Spring

Ø  J2EE

Ø  Eclipse plug-ins

Ø  Maven

Hibernate架构

Hibernate架构是分层的,隔离的,不必知道底层API。 Hibernate中使用数据库和配置信息来为应用程序提供持久化服务(以及持久的对象)。

下面是Hibernate应用程序体系结构的一个视图。

下面是Hibernate的应用架构与一些重要的核心组件的详细视图。

Hibernate使用各种现有的Java API,如JDBC,Java事务API(JTA)和Java命名和目录接口(JNDI)。 JDBC提供了常见的关系数据库功能的抽象的一个基本接口,使Hibernate支持几乎任何数据库,JNDI和JTA允许Hibernate与J2EE应用服务器进行集成。

以下部分列出了每个参与Hibernate应用程序体系结构的类的对象的简要说明。

Configuration 对象:

Configuration对象是你在任何Hibernate应用程序中创建第一个Hibernate的对象,并通常在应用程序初始化创建一次,它代表了Hibernate所需的配置或属性文件。 Configuration对象提供了两个关键组成部分:

Ø  数据库连接:通过Hibernate支持的一个或多个配置文件来处理,这些文件是:hibernate.properties和hibernate.cfg.xml。

Ø  类映射设置:此组件创建Java类和数据库表之间的连接

SessionFactory 对象:

Configuration对象用于创建一个SessionFactory对象,SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。

Session 对象:

Session对象用于获取与数据库的物理连接。Session接口对于Hibernate开发人员来说是一个最重要的接口。在Hibernate中,实例化的Session是一个轻量级的类,创建和销毁它都不会占用很多资源。这在实际项目中确实很重要,因为在客户程序中,可能会不断地创建以及销毁Session对象,如果Session的开销太大,会给系统带来不良影响。
Session对象是非线程安全的,因此在你的设计中,最好是一个线程只创建一个Session对象。  session看作介于数据连接与事务管理一种中间接口,我们可以将session想象成一个持久对象的缓冲区,Hibernate能检测到这些持久对象的改变,并及时刷新数据库。我们有时也称Session是一个持久层管理器,因为它包含一些持久层相关的操作,诸如存储持久对象至数据库,以及从数据库从获得它们。请注意,Hibernate
的session不同于JSP应用中的HttpSession,当我们使用session这个术语时,我们指的是Hibernate中的session,而我们以后会将HttpSesion对象称为用户session。   

Transaction 对象:

Transaction接口是一个可选的API,你可以选择不使用这个接口,取而代之的是Hibernate的设计者自己写的底层事务处理代码。   Transaction接口是对实际事务实现的一个抽象,这些实现包括JDBC的事务、JTA中的UserTransaction、甚至可以是CORBA
事务。之所以这样设计是能让开发者能够使用一个统一事务的操作接口,使得自己的项目可以在不同的环境和容器之间方便地移值。   

Query 对象:

Query接口让你方便地对数据库及持久对象进行查询,它可以有两种表达方式:HQL语言或本地数据库的SQL语句。Query经常被用来绑定查询参数、限制查询记录数量,并最终执行查询操作, 值得注意的是Query接口也是轻量级的,它不能在Session之外使用。
  

Criteria 对象:

Criteria接口与Query接口非常类似,它允许你创建并执行面向对象的标准化查询。  

Callback对象:
当一些有用的事件发生时――例如持久对象的载入、存储、删除时,Callback接口会通知Hibernate去接收一个通知消息。一般而言,Callback接口在用户程序中并不是必须的,但你要在你的项目中创建审计日志时,你可能会用到它。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hibernate java 数据库