参考书籍:《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/

Java Web编程的主要组件技术——Hibernate入门的更多相关文章

  1. Java Web编程的主要组件技术——Hibernate核心组件

    参考书籍:<J2EE开源编程精要15讲> Hibernate配置文件 1) hibernate.cfg.xml <?xml version='1.0' encoding='UTF-8 ...

  2. Java Web编程的主要组件技术——Struts入门

    参考书籍:<J2EE开源编程精要15讲> Struts是一个开源的Java Web框架,很好地实现了MVC设计模式.通过一个配置文件,把各个层面的应用组件联系起来,使组件在程序层面联系较少 ...

  3. Java Web编程的主要组件技术——MVC设计模式

    参考书籍:<J2EE开源编程精要15讲> MVC(Model View Controller),Model(模型)表示业务逻辑层,View(视图)代表表述层,Controller(控制)表 ...

  4. Java Web编程的主要组件技术——JDBC

    参考书籍:<J2EE开源编程精要15讲> JDBC(Java DataBase Connectivity)是Java Web应用程序开发的最主要API之一.当向数据库查询数据时,Java应 ...

  5. Java Web编程的主要组件技术——Struts核心组件

    参考书籍:<J2EE开源编程精要15讲> Struts配置文件struts-config.xml Struts核心文件,可配置各种组件,包括Form Beans.Actions.Actio ...

  6. Java Web编程的主要组件技术——Servlet

    参考书籍:<J2EE开源编程精要15讲> Servlet是可以处理客户端传来的HTTP请求,并返回响应,由服务器端调用执行,有一定编写规范的Java类. 例如: package test; ...

  7. Java Web编程的主要组件技术——Struts的高级功能

    参考书籍:<J2EE开源编程精要15讲> Struts对国际化的支持 "国际化"(I18N)指一个应用程序在运行时能根据客户端请求所来的国家/地区.语言的不同显示不同的 ...

  8. Java Web编程的主要组件技术——JSP

    参考书籍:<J2EE开源编程精要15讲> JSP(Java Server Page)页面由HTML代码和嵌入其中的Java代码组成. 简单的JSP页面如: <html> < ...

  9. 五分钟学Java:如何才能学好Java Web里这么多的技术

    原创声明 本文作者:黄小斜 转载请务必在文章开头注明出处和作者. 系列文章介绍 本文是<五分钟学Java>系列文章的一篇 本系列文章主要围绕Java程序员必须掌握的核心技能,结合我个人三年 ...

随机推荐

  1. C# XML - XmlNode and XmlAttribute

    public static string TestXML(string path) { XmlDocument doc = new XmlDocument(); doc.Load(path); Xml ...

  2. org.apache.commons.dbutils.QueryRunner 执行sqlserver的存储过程

    执行不带输出参数的存储过程与 执行普通update  sql没有什么区别,直接调用即可: 示例代码: public Boolean startResidentialInfoStatistics(Str ...

  3. 项目中的libevent

    单线程libevent模式 项目里面是多线程版的,我先理解下单线程的. //client .调用NGP::init() bool NGP::init(NGPcontext context) { _co ...

  4. uva 10330 最大流

    拆点  将节点 i 的容量拆成从 i 到 i+n 的边的容量 套用最大流模板 ac #include <cstdio> #include <cstdlib> #include ...

  5. Java中super的用法并与this的区别(转载)

    一.子类中如果需要调用父类中的构造函数,则需要使用super(),且必须在构造函数中的第一行 public class Demo1 { public static void main(String[] ...

  6. First Lua function running in C

    这是我在C里面跑出来的第一个Lua 文件, 纪念一下. 1.Set up envirnonment: Mac下面 Lua的src (即include) 和lib(binary)是分开的, 所以需要分别 ...

  7. poj 2387 Til the Cows Come Home (最短路,dijkstra模版题)

    题目 #define _CRT_SECURE_NO_WARNINGS #include<string.h> #include<stdio.h> #include<math ...

  8. hdu2544 最短路

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=2544 最短路径DIJKSTRA #include<stdio.h> #include<m ...

  9. svn:...target\classes\META-INF\MANIFEST.MF (系统找不到指定的路径。)

    在上传项目到svn时,pom.xml报错

  10. Haxe - Actuate.Tween

    方法解释: Actuate.tween( target : Dynamic , duration : Float , properties : Dynamic , ?overwrite : Bool ...