1.简介

在java开发领域,基于数据库应用的设计与实现一直都是面向关系的,Hibernate对象/关系映射ORM框架的出现为java面向对象开发提供了易于使用的数据持久化解决方案。

  ORM介绍:

  (a).ORM(Object Relation Mapping)中文翻译成对象关系映射

  (b).ORM是一种为解决“面向对象”与“关系数据库”存在不匹配的现象而出现的一种技术

  (c).ORM通过使用描述对象和数据库之间映射的元数据,将java程序中的对象自动持久化到关系数据库中

  (d).ORM中的映射关系为:面向对象中的(类/对象/属性)——>面向关系中的(表/表的行(记录)/表的列(字段))

  (e).ORM实现的思想:将关系数据库中表的记录(表的行)映射成对象,以对象的形式展现,程序员可以将对数据库的操作转化为对对象的操作

  (f).流行的ORM框架:Hibernate , Ibatis , TopLink , apache OJB

Hibernate将java中的对象与对象的关系映射至关系型数据库中成表格与表格的关系,起到了java应用和关系数据库之间的桥梁作用,它封装了JDBC访问数据库的操作,并向上层提供面向对象的数据库访问API。

  这里借用网上一张图片来说下Hibernate与JDBC之间的区别:

  

2.Hibernate运行过程

(a). 应用程序调用configuration类

(b). configuration类读取Hibernate配置文件以及映射文件,并用这些信息生成一个SessionFactory类。

(c).从SessionFactory类生成一个Session对象

(d).用Session对象生成一个Transaction对象

(e).可通过Session对象的get(),load(),save(),update(),delete() 和saveorupdate()等方法对POJO类(plain old java object)进行加载,保存,更新,删除等操作

  POJO介绍:

  (a') POJO (plain old java object)中文译为:简单的java对象,普通的java类。

  (b') POJO 实际意义是普通的JavaBeans(最简单的java类,即一个类只有属性,然后一大堆set,get和tostring方法)

  (c') POJO 的特点是支持业务逻辑的协助类,不继承不实现不注释

  JavaBean介绍:

  (a')JavaBean 是POJODE的Serializable(序列化),它通常是被容器创建(如tomcat),所以它应该具有一个无参数的构造器。同时它也是一种组件技术,不能跨进程访问。

  (b') JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器

  (c')JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。

  (d')众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制发现和操作这些JavaBean 的属性。

(f).在查询情况下,可通过Session对象生成一个Query对象,然后利用Query对象执行查询操作;若无异常,Transaction对象将提交这些操作到数据库中,若出现异常,则会回滚。

3.Hibernate项目分层结构:

从比较流行的MVC模式中将Hibernate可以分为如下几个层次

数据层:指数据库的设计

DAO层:DAO(Data Access Object)数据访问对象。DAO层的提出是为了实现把对数据的操作和对业务的操作分离,DAO层直接为上层业务逻辑层提供访问数据的接口。(DAO层比较重要)

业务逻辑层:这里把业务逻辑层封装成一个Service,直接供控制层调用。

控制层和视图层:可见层,采用jsp,Html,css,ajax等。

Hibernate的初步的更多相关文章

  1. Hibernate知识总结(一)

    一.ORM ORM的全称是Object/Relation Mapping,即对象/关系映射,可以将其理解成一种规范,它概述了这类框架的基本特征:完成面向对象的编程语言到关系数据库的映射.可以把ORM看 ...

  2. Spring入门(四)— 整合Struts和Hibernate

    一.Spring整合Struts 1. 初步整合 只要在项目里面体现spring和 strut即可,不做任何的优化. struts 环境搭建 创建action public class UserAct ...

  3. hibernate初步4

    JPA 1.JPA概述 JPA(Java Persistence API)是Sun官方提出的Java持久化规范.它为Java开发人员提供了一种对象/关系映射工具来管理Java应用中的关系数据.,而Hi ...

  4. Hibernate学习2—Hibernate4 CRUD体验初步

    接着上一节,工程结构: jar包没有变化: 一.HibernateUtil 封装: com.cy.util.HibernateUtil.java: package com.cy.util; impor ...

  5. ssh整合思想初步 structs2 Spring Hibernate三大框架各自要点

    Web层用Structs2的action Service层用Spring的IoC和aop以及JdbcTemplate或者Transaction事务(创建对象及维护对象间的关系) Dao层用Hibern ...

  6. hibernate初步3

    事务和并发 1.事务概念 一组不可分割的操作,事务有如下属性(ACID 属性:Atomic Consistent Isolated Durable)(1)原子性---Atomic  事务的原子性指的是 ...

  7. hibernate初步2

    Hibernate级联设计 数据库表之间的关系(主要关系有一对多.一对一.多对多)主要是从如下三个方面体现出来: 1.表体设计 2.实体类的设计 3.配置文件 以下是一些重要级联设计参数属性介绍: c ...

  8. hibernate初步

    Hibernate开发步骤1.新创建工程并且导入相关的包 主要是hibernate.mysql相关的JAR包. 注意:新导入的hibernate相关的JAR包是否与你当前所使用的jdk版本是否兼容,且 ...

  9. Spring Data初步--整合Hibernate

    Spring Data课程中的技术介绍 Hibernate: Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装,它将 pojo 与数据库表建立映射关系 ...

随机推荐

  1. Python--类-例子

    class Base: def __init__(self): self.data = [] def add(self, x): self.data.append(x) def addtwice(se ...

  2. win平台,apache通过web访问svn

    上个月用php写一个在线打包lua变成luac,碰到个权限问题.pysvn无法更新.网上搜了好半天都找不到解决方法.最好还是自己解决了. 解决方法也很简单,找到aphache服务,提权限就行了.lin ...

  3. mono+jexus 验证码不显示:System.Drawing

    System.ArgumentException The requested FontFamily could not be found [GDI+ status: FontFamilyNotFoun ...

  4. python 字符串分割

    字符串分割,可以用split,rsplit方法,通过相应的规则来切割成生成列表对象 info = 'name:haha,age:20$name:python,age:30$name:fef,age:5 ...

  5. ruby AES加密解密

    最近和京东合作做一个项目,在接口对接传递参数时,参数需要通过AES加密解密. 本来想到用gem 'aescrypt'处理,但是aescrypt的编码方式用的base64,而京东那边用的是16进制.所以 ...

  6. [CS231n-CNN] Backpropagation(反向传播算法)

    课程主页:http://cs231n.stanford.edu/ 上节讲到loss function: 引出了求导数使得loss function减小. -Back Propagation :梯度下降 ...

  7. Android & CM build basics

    [CM source code folders] bootable/Among other things, the source for ClockworkMod recovery is in her ...

  8. linux常用

    一.命令 1.查指令,man, info, /usr/share/doc/: 2.文档,nano lyp.txt: 3.谁在线,who: 4.数据同步写入硬盘,sync: 5.显示档案,ls: 6.目 ...

  9. 用于软件包管理的21个Linux YUM命令 转载

    http://flycars001.iteye.com/blog/1949085 YUM到底是啥东东? YUM(Yellowdog Updater Modified)是一款开源命令行及图形化软件包管理 ...

  10. Direct3D11学习:(五)演示程序框架

    转载请注明出处:http://www.cnblogs.com/Ray1024 一.概述 在此系列最开始的文章Direct3D11学习:(一)开发环境配置中,我们运行了一个例子BoxDemo,看过这个例 ...