数据库操作是当今传统应用软件不可缺少的一部分,几乎所用的应用性系统和交互性软件都离不开数据库的支持,所以对数据库数据库的操作也是一个必不可少的工作,在java的世界里,传统的数据库访问就是jdbc数据库访问,刚开始学习的时候应该还能满足我们的需求,但真正在实际应用中,其繁琐的操作,开发效率低效,代码冗余等不可避免的缺点也是大家有目共睹的,所以,一套高效简便的数据库访问框架在这种繁琐工作中诞生了,这就是我们如今java世界里风靡全球的Hibernate框架(这个应该不夸张吧),所以从今天开始,我和大家就一起进入hibernate的复习。

Hibernate百度名片:

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

从上边百度名片中,我们可以看出:

1)         其实hibernate底层依然是jdbc实现的,只不过jdbc的繁琐操作都让框架来替我们做了,程序员已经从繁琐的jdbc操作中解脱出来了。

2)         Hibernate是一个对象关系映射模型,也就是说,它主要操作的是对象和关系之间的映射,对象,即为我们java中类的对象,只不过类一般是一些实体类

3)         Hibernate不仅仅是在web上的应用框架,这是很多初学者的任务,认为hibernate只是用在web开发中的。其实这是一个很错误的观点

持久化:

上面我们看出hibernate主要完成的是一个数据持久化的重任,很多人应该想了,这个,持久化是什么啊?下面我们就来说一下这个持久化:持久化是将程序数据在持久状态和瞬时状态间转换的一种机制,持久化的主要应用是将内存中的对象存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。

(1)瞬时状态(transient)

保存在内存中的数据。程序退出后,数据就消失了。

(2)持久状态(Persisten)

在一定周期内保持不变就是持久化,持久化是针对时间来说的. 数据库中的数据就是持久化了的数据,只要你不去删除或修改. 比如在IE浏览器中一次Session会话中Session对象变量也是不变的,是Session容器中持久化 ,对象持久化的方式有很多种,根据周期不同有,page,Session,Application,

   hibernate为应用程序提供了高效的O/R关系映射和查询服务,为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。他也是对对象持久化一个很好的实现。简单示例一下:

对象关系映射

从上边我们可以看出,Hibernate是一个开放源代码的对象关系映射框架,对象/关系数据库映射(object/relational mapping(ORM))这个术语表示一种技术,用来把对象模型表示的对象映射到基于SQL的关系模型数据库结构中去。ORM,即Object- Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的 SQL语句打交道,只要像平时操作对象一样操作它就可以了。 对象关系映射(ORM)提供了概念性的、易于理解的模型化数据的方法。ORM方法论应当基于三个核心原则: 
        简单:以最基本的形式建模数据。 
        传达性:数据库结构被任何人都能理解的语言文档化。 
        精确性:基于数据模型创建正确标准化了的结构。

下面我们就一起来认识一下hibernate,Hibernate能做什么?

Hibernate能帮助我们利用面向对象的思想,开发基于关系型数据库的应用程序

第一:将对象数据保存到数据库

第二:将数据库数据读入对象中

Hibernate体系结构:

一个非常简要的Hibernate体系结构的概要图:

从这个图可以看出,Hibernate使用数据库和配置信息来为应用程序提供持久化服务(以及持久的对象)。

我们来更详细地看一下Hibernate运行时体系结构。由于Hibernate非常灵活,且支持多种应用方案,所以我们这只描述一下两种极端的情况。“轻型”的体系结构方案,要求应用程序提供自己的JDBC 连接并管理自己的事务。这种方案使用了Hibernate API的最小子集:

“全面解决”的体系结构方案,将应用层从底层的JDBC/JTA API中抽象出来,而让Hibernate来处理这些细节。

好了,hibernate基本概念和体系结构就先介绍到这,下一篇博客我将会和大家一起来开发我们的第一个hibernate应用程序,谢谢大家支持。

 

转载于:https://blog.51cto.com/javacsh/1129191

Java程序员从笨鸟到菜鸟之(五十)细谈Hibernate(一)hibernate基本概念和体系结构...相关推荐

  1. Java程序员从笨鸟到菜鸟之(十)枚举,泛型详解

    一:首先从枚举开始说起 枚举类型是JDK5.0的新特征.Sun引进了一个全新的关键字enum来定义一个枚举类.下面就是一个典型枚举类型的定义: public enum Color{ RED,BLUE, ...

  2. Java程序员从笨鸟到菜鸟全部博客目录

    本文来自:曹胜欢博客专栏.转载请注明出处:http://blog.csdn.NET/csh624366188 欢迎关注微信账号:java那些事:csh624366188.每天一篇java相关的文章 大 ...

  3. Java程序员从笨鸟到菜鸟之(序言)+全部链接

    http://blog.csdn.net/csh624366188 大学上了一年半,接触java也一年半了,虽然中间也有其他东西的学习,但是还是以java为主路线,想想这一年半,除去前半年几乎全玩了, ...

  4. Java程序员由笨鸟到菜鸟 电子版书正式发布 欢迎大家下载

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 欢迎关注 ...

  5. Java程序员从笨鸟到菜鸟之——总结和声明

    前段时间经过大约二十天的时间把javaSE的内容总结了一下,最近由于个人原因和一些乱七八糟的事情,一直没在更新,首先感谢那些一如既往支持我的朋友.最近不知道为什么,一直很懒,做东西也一直是效率很低,生 ...

  6. Java程序员从笨鸟到菜鸟之(五)java开发常用类(包装,数字处理集合等)(下)...

     本文来自:曹胜欢博客专栏.转载请注明出处:http://blog.csdn.net/csh624366188 写在前面:由于前天项目老师建设局的项目快到验收阶段,所以,前天晚上通宵,昨天睡了大半天, ...

  7. Java程序员从笨鸟到菜鸟之(一百零九)一步一步学习webservice(三)开发第一个基于XFire的webservice

    在日常开发中,常用的webservice引擎主要有Axis,axis2,Xfire以及cxf(Xfire的升级版).现在只有axis2和cxf官方有更新.今天我们先以一个比较老的引擎为例.来讲诉一下w ...

  8. Java程序员从笨鸟到菜鸟之(一百零八)一步一步学习webservice(二)webservice基本原理

    本来这第二篇打算讲解"开发第一个基于XFire的webservice"的内容来着.但是想想.开发实例只是局限于了会用的层面上.如果想真正的理解webservice还是需要挖掘其原理 ...

  9. Java程序员从笨鸟到菜鸟之(五)java开发常用类(包装,数字处理集合等)(下)

    写在前面:由于前天项目老师建设局的项目快到验收阶段,所以,前天晚上通宵,昨天睡了大半天,下午我们宿舍聚会,所以时间有点耽误,希望大家见谅 上接: Java程序员从笨鸟到菜鸟之(四)java开发常用类( ...

  10. Java程序员从笨鸟到菜鸟之(一百零六)java操作office和pdf文件(四)页面列表导出cvs,excel、pdf报表.

    在平常的开发中我们常常遇到不仅仅只是导出excel报表的情况.有时候也需要导出pdf或者CSV报表.其实原理都差不多.刚开始本来不打算也这篇博客介绍这个的.感觉这篇博客和前面的博客有点雷同.原理基本都 ...

最新文章

  1. with...as...
  2. Android Design新特性-NavigationView实现抽屉式
  3. JZOJ 4366. 【GDKOI2016】项链
  4. 前端学习(2557):理解插槽
  5. mysql root用户密码个性
  6. 一次难忘的 MTS 故障的排除过程
  7. 如何在golang http服务端程序中读取2次Request Body?(转)
  8. 深度linux添加xp,Linux和Windos XP下向路由表添加路由
  9. 2017年高频率的互联网校园招聘面试题
  10. 小度智能音箱维修点_进击的小钢炮!体验小度智能音箱大金刚
  11. 金色传说:SAP-BC-下载数据及导入,导出EXCEL文件的控制问题
  12. 【开发工具】【Java开发工具 IDEAIU-2017.3】【安装和激活】
  13. js怎样向html中添加内容,使用js向网页中写入html内容
  14. 访问samba服务器提示无权限使用网络资源
  15. Python Selenium自动化测试框架 Test Suite测试套件
  16. 服务器cadence比虚拟机慢,Cadence版本选择浅见
  17. 51单片机控制的自动感应调光、坐姿矫正智能台灯
  18. Android自定义网络状态请求页面
  19. mysql 数据库里查询语句中不等于的两种写法
  20. 2018.1.7 计算机算法课后习题总结

热门文章

  1. 原生ajax接收json字符串(简单介绍)
  2. 找出数组中的最大值和最小值
  3. html5新增标签/删除标签
  4. 二叉搜索树(搜索二叉树)转换成一个双向链表
  5. [leetcode]Subsets
  6. 【有意思的BUG】未名
  7. 一步步写俄罗斯方块(二)
  8. Python 入门演示
  9. 【算法竞赛-入门经典】计算并输出1+2的值
  10. 团队-科学计算器-开发环境搭建过程