参考书籍:《J2EE开源编程精要15讲》

Hibernate是对象/关系映射(ORM,Object/Relational Mapping)的解决方案,就是将Java对象与对象关系映射到关系型数据库中的表格与表格之间的关系。它是Java应用与关系数据库之间的桥梁,负责Java对象和关系数据之间的映射。Hibernate内部封装了通过JDBC访问数据库的操作,向上层应用提供了面向对象的数据库访问API。

Hibernate的体系结构

  Hibernate通过配置文件( hibernate.properties 或 hibernate.cfg.xml )和映射文件( .hbm.xml )把Java对象或持久化对象( Persistent Object,PO )映射到数据库的表格,然后通过操作PO,对数据表中的数据进行增、删、改、查等操作。

Hibernate的核心组件

  • Configuration类:用来读取Hibernate配置文件,并生成SessionFactory对象。
  • SessionFactory接口:产生Session实例的工厂
  • Session接口:用来操作PO。有get()、load()、save()、update()、delete()等方法用来对PO进行加载、保存、更新及删除等操作,是Hibernate的核心接口
  • Query接口:用来对PO进行查询操作。可从Session的createQuery()方法生成
  • Transaction接口:用来管理Hibernate事务,主要方法有commit()和rollback(),可从Session的beginTransaction()方法生成
  • Hibernate配置文件主要用来配置数据库链接参数,如数据库驱动程序、URL、用户名、密码等。有两种格式:hibernate.properties 和 hibernate.cfg.xml,hibernate.cfg.xml可以在其<mapping>子元素中定义用到的xxx.hbm.xml映射文件列表,而hibernamte.properties需要在程序中以硬代码方式指明。一般hibernate.cfg.xml是Hibernate的默认配置文件
  • 映射文件(xxx.hbm.xml)用来把PO与数据库中的数据表、PO之间的关系与数据库之间的关系、以及PO的属性与表字段一一映射起来,是Hibernate的核心文件
  • 持久化对象(PO)可以是普通的JavaBean/POJO,唯一特殊的是他们正与(仅仅一个)Session相关联。JavaBean在Hibernate中存在三种状态:临时状态(transient)、持久化状态(persistent)和托管状态(detached)。当JavaBean对象在内存中孤立存在、不与数据库中的数据有任何关联关系时,为临时对象;当它与一个Session相关联时,为持久化对象;在这个Session被关闭的同时,这个对象变成脱管对象。

Hibernate的运行过程

  1) 应用程序调用Configuration类,该类读取Hibernate配置文件级映射文件中的信息,并生成一个SessionFactory

  2) 从SessionFactory对象生成一个Session对象,并用Session对象生成Transaction对象

  3) 通过Session对象的get()、load()、save()、update()、delete()、saveOrUpdate()等方法对PO进行加载、保存、更新、删除等操作;通过Session对象生成一个Query对象,进行查询操作

  4) 如无异常,Transaction对象将提交这些操作结果到数据库中

应用示例 简单用户登记:http://pan.baidu.com/s/1dDGSzQh

相关资料:http://yusun.blog.163.com/blog/static/20174407620120432015398/

最新文章

  1. Error 1606 Could Not Access Network Location %SystemDrive%/inetpub/wwwroot/ 的错误解决方法
  2. [翻译]用 Puppet 搭建易管理的服务器基础架构(2)
  3. ADO.NET封装的SqlHelper
  4. activti表结构
  5. discuzX3后台管理插件开发示例一 用户表查询
  6. WPF ListBox响应鼠标滚轮
  7. 将C-风格字符串用作string对象引用参数
  8. STOMP
  9. Daily Scrum 10.23
  10. 雷林鹏分享:Ruby 类案例
  11. axios构建缓存池存储基础数据
  12. logback配置与使用(2)
  13. ACM3371超时问题
  14. KindEditor 4.1.7的使用技巧
  15. maven将jar文件加入到maven库
  16. Python2 socket 多线程并发 TCPServer Demo
  17. linux系统串口编程实例
  18. python3 定义向量运算
  19. Nginx学习——进程模型(master 进程)
  20. Educational Codeforces Round 33 (Rated for Div. 2)

热门文章

  1. EXT经验--查询items的xtype
  2. MyEclipse 2015 Stable 1.0下载安装破解日志
  3. C# mongodb [下]
  4. PAT-乙级-1050. 螺旋矩阵(25)
  5. HDU&#160;1301&#160;Jungle&#160;Roads&#160;(最小生成树,基础题,模版解释)——同 poj 1251 Jungle Roads
  6. APT工作原理
  7. hdu 1536/1944 / POJ 2960 / ZOJ 3084 S-Nim 博弈论
  8. hdu 4315 Climbing the Hill 博弈论
  9. windows cmd控制台打开和关闭SqlServer 以及 显示发生系统错误5 拒绝访问的解决方案
  10. JS创建对象