Hibernate入门学习(一)

一、Hibernate是什么

  Hibernate主要用来实现Java对象和数据表之间的映射,除此之外还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL和JDBC处理数据的时间。Hibernate是一个轻量级的ORMapping框架,ORMapping(Object Relational Mapping)原理简单来说就是将关系型的数据表映射成面向对象实体,参考下图:

  可以从图中很清晰的看到,Tbl_user表格中的每一条记录都可以被映射表为一个UserModel实例对象。

  ORMapping基本对应规则为:

  1、类跟表相对应

  2、类的属性跟表的字段相对应

  3、类的实例与表中具体的一条记录相对应

  4、一个类可以对应多个表,一个表也可以对应对个类(多对多的映射关系)

  5、DB中的表可以没有主键,但是Object中必须设置主键字段

  6、DB中表与表之间的关系(如:外键)映射成为Object之间的关系

  7、Object中属性的个数和名称可以和表中定义的字段个数和名称不一样(映射对象之间可以有差异)

  ORMapping的基本实现方式:

  使用JDBC,用SQL来操作数据库,只是看自动生成还是人工写代码来实现,其实在很多场景下都有过这样的应用。参见下图所示:

       

  左边这张图中表示通过手动方式实现ORMapping,右边这张图表示Hibernate来实现ORMapping。右边这张图很清晰的指出了Hibernate实现对象与数据库表格之间映射关系的奥妙,Hibernate是通过两个关键的xml(配置)文件来得知如何映射对象关系的,所以可以猜测到这两个配置文件应该是非常关键的,并且比人工写JDBC语句来操作数据库肯定简单很多。

二、Hibernate能干什么

  Hibernate的目标是对于开发者通常的数据持久化相关的编程任务,解放其中95%的任务量。对于以数据为中心的程序来说,它们往往只在数据库中使用存储过程来实现商业逻辑,Hibernate可能不是最好的解决方案;但是对于那些在基于Java的中间层应用中,它们实现面向对象的业务模型和商业逻辑的应用,Hibernate是最有用的。Hibernate可以帮助你消除或者包装那些针对特定厂商的SQL代码,并且帮你把结果集从表格式的表示形式转换到一系列的对象去。

  Hibernate在应用架构中的关系参见下图所示:

  Hibernate的高层概要图如下图所示:

  图中可以看出,Application只需操作Hibernate架构中的Persistent Objects即可。针对Database的操作全部交给Hibernate进行处理,而Hibernate又是依靠两个配置参数进行具体的连接,分别是:Hibernate properties(可以理解为上面提到的XXX.cfg.xml)和XML Mapping(对应上面提到的XXX.hbm.xml)。

  我们可以对比一下使用Hibernate的“最小”体系结构和“全面”体系结构的示意图:

  上图中左边表示“最小”体系结构,要求应用程序提供自己的 JDBC 连接并管理自己的事务。这种方案使用了Hibernate API 的最小子集。

  上图中右边表示“全面”体系结构,Hibernate将应用层从底层的JDBC/JTA API中抽象出来,而让Hibernate来处理这些细节。从这个“全面”的Hibernate结构中可以看到有五个“关键模块”,这五个模块表示的含义分别如下:

(1)SessionFactory (org.hibernate.SessionFactory)

  针对单个数据库映射关系经过编译后的内存镜像,是线程安全的(不可变)。 它是生成Session的工厂,本身要用到ConnectionProvider。

(2)Session (org.hibernate.Session)

  表示应用程序与持久储存层之间交互操作的一个单线程对象,此对象生存期很短,隐藏了JDBC连接,也是Transaction的工厂。

(3)Transaction (org.hibernate.Transaction)

  应用程序用来指定原子操作单元范围的对象,它是单线程的,生命周期很短。它通过抽象将应用从底层具体的JDBC、JTA以及CORBA事务隔离开。

(4)ConnectionProvider (org.hibernate.connection.ConnectionProvider)

  生成JDBC连接的工厂(有连接池的作用)。它通过抽象将应用从底层的Datasource或DriverManager隔离开。仅供开发者扩展/实现用,并不暴露给应用程序使用。

(5)TransactionFactory (org.hibernate.TransactionFactory)

  生成Transaction对象实例的工厂。仅供开发者扩展/实现用,并不暴露给应用程序使用。

小结:

  本篇文章主要介绍了Hibernate的基本概念和体系结构。

时间: 2024-10-10 11:14:28

Hibernate入门学习(一)的相关文章

Hibernate入门学习-安装hibernate插件

最近一直在学习ssh框架,为了更方便hibernate的使用,所以在eclipse下载hibernate插件,安装插件有两种方法 第一种:本地安装 1).插件的官网下载地址:http://tools.jboss.org/downloads/,选择你要安装的插件,如图所示: 2).打开eclipse->help->Install New Software->Add 3).选择你需要要安装的插件.不要勾选更新,否则需要联网下载,然后一直next就好了! 第二种:在线安装: Help >

Hibernate入门学习(二)

本文主要讲如何搭建Hibernate开发环境和简单实例. 一.搭建开发测试环境 1.1 下载Hibernate 从Hibernate官方网站上下载最新的Hibernate ORM,从Hibernate官方文档页面可以看到相应的最新帮助文档内容. 我下载了当前最新的Hibernate压缩包为hibernate-release-4.3.6.Final.zip,这里面也包含了相应的帮助文档,不过在线的帮助文档有所差别,会更加全面一些. 1.2 在Eclipse中配置Hibernate Hibernat

Hibernate的核心API ---- 入门学习

叙:学习hibernate是必不可少的要了解其核心的API,下面电虫就核心API进行记录学习: Hibernate核心API Hibernate核心API有configuration.SessonFactory.Session.Transaction等,在Session中有增删改查等小地API,下面进行详细学习: 学习要有目标有方向,所以从一段代码中从上到下的进行研读不失为一种高效率的学习方法,学习模板代码如下所示: 1 package com.java.hibernate.demo1; 2 3

史上最简单的Hibernate入门简单介绍

事实上Hibernate本身是个独立的框架,它不须要不论什么web server或application server的支持.然而,大多数的Hibernate入门介绍都加入了非常多非Hibernate的东西,比方: Tomcat, Eclipse, Log4J,Struts, XDoclet, 甚至JBoss.这easy让人产生Hibernate复杂难懂的误解,特别是打击了刚開始学习的人的积极性. 在这篇文章将不涉及Eclipse, log4j, Struts, Tomcat, XDoclet,

(01)Hibernate入门

1.Hibernate在SSH中的地位 SSH 序号 技术 作用 1 Struts 基于mvc模式的应用层框架技术! 2 Spring 创建对象.处理对象的依赖关系以及框架整合! 3 Hibernate 基于持久层的框架(数据访问层使用)! 2.DAO层的代码是如何编写的? (1)操作XML数据 (2)使用Jdbc技术 a)原始的jdbc操作, Connection/Statement/ResultSet b)自定义一个持久层框架, 封装了dao的通用方法 c)DbUtils组件, 轻量级的da

Hibernate入门1

Hibernate概述: 1. 什么是框架: 写程序,在使用框架之后,帮我们实现一部分的功能,使用框架的好处可以少写一部分代码实现功能 2. 什么是hibernate框架: hibernate框架应用在javaee三层结构中的dao层的框架 在dao层里面做对数据库的crud操作,使用hibernate实现crud操作,hibernate底层代码就是jdbc,hibernate对jdbc进行封装,使用hibernate好处,不需要写复杂的jdbc代码了,不需要写sql语句了 hibernate是

hibernate的学习心得(引用知乎的一个author)

这篇文章引用于知乎的一个author的观点,原文也是直接copy,我个人觉得这篇文章最厉害的是最后的一段话,深刻的见地啊! 下面是原文: Hibernate入门容易,掌握精通我也不敢自夸.我第一遍看Hibernate文档的时候也觉得很吃力,但不是因为Hibernate难掌握而感到吃力,是因为Hibernate文档处处都是持久层设计的经验和最佳实践. ###adv### Hibernate文档准确的来说,绝大部分内容都在讲对象的持久层设计,而不是简单的Hibernate使用,使用问题查Java d

Hibernate入门简介

什么是Hibernate框架? Hibernate是一种ORM框架,全称为 Object_Relative DateBase-Mapping,在Java对象与关系数据库之间建立某种映射,以实现直接存取Java对象! 为什么要使用Hibernate? 既然Hibernate是关于Java对象和关系数据库之间的联系的话,也就是我们MVC中的数据持久层->在编写程序中的DAO层... 首先,我们来回顾一下我们在DAO层写程序的历程吧: 在DAO层操作XML,将数据封装到XML文件上,读写XML文件数据

走进JavaWeb技术世界13:Hibernate入门经典与注解式开发

微信公众号[黄小斜]大厂程序员,互联网行业新知,终身学习践行者.关注后回复「Java」.「Python」.「C++」.「大数据」.「机器学习」.「算法」.「AI」.「Android」.「前端」.「iOS」.「考研」.「BAT」.「校招」.「笔试」.「面试」.「面经」.「计算机基础」.「LeetCode」 等关键字可以获取对应的免费学习资料. ? Hibernate入门这一篇就够了 前言 本博文主要讲解介绍Hibernate框架,ORM的概念和Hibernate入门,相信你们看了就会使用Hiber