一,概览

Hibernate负责从Java类到数据库表的映射,以及从Java数据类型到SQL数据类型的映射。另外还提​​供数据查询和检索功能。它可以显着减少在SQL和JDBC中手动处理数据的开发时间。Hibernate的设计目标是通过消除使用SQL和JDBC进行手动,手工数据处理的需要。(对象关系映射(英语:(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换[1]  。从效果上说,它其实是创建了一个可在编程语言里使用的--“虚拟对象数据库”。)

对于只使用存储过程来实现数据库中的业务逻辑的以数据为中心的应用程序来说,Hibernate可能不是最好的解决方案,它对于基于Java的中间层中的面向对象的领域模型和业务逻辑非常有用。但是,Hibernate肯定可以帮助您删除或封装特定于供应商的SQL代码,并简化将结果集从表格表示转换为对象图形的常见任务。

以下是hibernate架构图:

作为ORM解决方案,Hibernate有效地位于Java应用程序数据访问层和关系数据库之间,如上图所示。Java应用程序利用Hibernate API来加载,存储,查询其域数据。这里我们将介绍基本的Hibernate API。这将是一个简短的介绍; 我们稍后会详细讨论这些合约。

作为一个JPA提供者,Hibernate实现了Java Persistence API规范,并且JPA接口和Hibernate特定实现之间的关联可以在下图中看到:

1)SessionFactory(org.hibernate.SessionFactory)

应用程序域模型到数据库映射的线程安全(和不可变)表示。充当org.hibernate.Session实例的工厂。该EntityManagerFactory是JPA等价的SessionFactory,基本上这两个汇聚到同一SessionFactory执行。

A SessionFactory是非常昂贵的创建,所以,对于任何给定的数据库,应用程序应该只有一个关联SessionFactory。SessionFactoryHibernate所使用的维护服务,Session(s)例如二级缓存,连接池,事务处理系统集成等。
2)Session(org.hibernate.Session)

一个单线程,短暂的对象,在概念上为“工作单元” PoEAA建模。在JPA命名法中,Session由an代表EntityManager。

在幕后,Hibernate Session包装了一个JDBC java.sql.Connection并充当org.hibernate.Transaction实例的工厂。它维护应用程序域模型的一般“可重复读取”持久性上下文(第一级缓存)。
3)Transaction(org.hibernate.Transaction)

应用程序使用单线程,短期的对象来划分单个物理事务边界。 EntityTransaction是JPA的等价物,它们都充当抽象API来隔离正在使用的底层事务系统(JDBC或JTA)的应用程序。

4)Query 对象

Query 对象使用 SQL 或者 Hibernate 查询语言(HQL)字符串在数据库中来检索数据并创造对象。一个查询的实例被用于连结查询参数,限制由查询返回的结果数量,并最终执行查询。
5)Criteria 对象

Criteria 对象被用于创造和执行面向规则查询的对象来检索对象。

二,类型

1, org.hibernate.type.Type:                                                                                                                                  Hibernate类型既不是Java类型,也不是SQL数据类型。它提供了关于这两者的信息以及理解之间的编组。

当在Hibernate的讨论中遇到术语类型时,它可能会根据上下文来引用Java类型,JDBC类型或Hibernate类型。               Hibernate类型既不是Java类型,也不是SQL数据类型。它提供了关于这两者的信息以及理解之间的编组。当在Hibernate的讨论中遇到术语类型时,它可能会根据上下文来引用Java类型,JDBC类型或Hibernate类型。

2,hibernate中的类型与java中的数据类型对应关系:

。。。具体类型可参考官网,这些映射是由Hibernate中的一个叫做org.hibernate.type.BasicTypeRegistry的服务来管理的,它基本上维护着一个由名字键入的org.hibernate.type.BasicType(org.hibernate.type.Type 类型实现)实例的映射。这是前面表格中“BasicTypeRegistry
key(s)”列的用途。

hibernate学习笔记(1)结构与基本数据类型的更多相关文章

  1. Hibernate学习笔记(二)

    2016/4/22 23:19:44 Hibernate学习笔记(二) 1.1 Hibernate的持久化类状态 1.1.1 Hibernate的持久化类状态 持久化:就是一个实体类与数据库表建立了映 ...

  2. Hibernate学习笔记(一)

    2016/4/18 19:58:58 Hibernate学习笔记(一) 1.Hibernate框架的概述: 就是一个持久层的ORM框架. ORM:对象关系映射.将Java中实体对象与关系型数据库中表建 ...

  3. opencv学习笔记(三)基本数据类型

    opencv学习笔记(三)基本数据类型 类:DataType 将C++数据类型转换为对应的opencv数据类型 OpenCV原始数据类型的特征模版.OpenCV的原始数据类型包括unsigned ch ...

  4. Hibernate 学习笔记一

    Hibernate 学习笔记一 今天学习了hibernate的一点入门知识,主要是配置domain对象和表的关系映射,hibernate的一些常用的配置,以及对应的一个向数据库插入数据的小例子.期间碰 ...

  5. Hibernate学习笔记-Hibernate HQL查询

    Session是持久层操作的基础,相当于JDBC中的Connection,通过Session会话来保存.更新.查找数据.session是Hibernate运作的中心,对象的生命周期.事务的管理.数据库 ...

  6. 《从零开始学Swift》学习笔记(Day 13)——数据类型之整型和浮点型

    Swift 2.0学习笔记(Day 13)——数据类型之整型和浮点型 原创文章,欢迎转载.转载请注明:关东升的博客    Swift提供8.16.32.64位形式的有符号及无符号整数.这些整数类型遵循 ...

  7. JavaScript:学习笔记(2)——基本概念与数据类型

    JavaScript:学习笔记(2)——基本概念与数据类型 语法 1.区分大小写.Test 和 test 是完全不同的两个变量. 2.语句最好以分号结束,也就是说不以分号结束也可以. 变量 1.JS的 ...

  8. Hibernate学习笔记

    一.Hibernate基础 1.Hibernate简介 Hibernate是一种对象关系映射(ORM)框架,是实现持久化存储的一种解决方案.Java包括Java类到数据库表的映射和数据查询及获取的方法 ...

  9. python学习笔记(4)-基本数据类型-数字类型及操作

    大学mooc 北京理工大学 python语言程序设计课程学习笔记 一.整数类型 可正可负,没有取值范围的限制(这个与c不同,c要考虑数据类型的存储空间).如pow(x,y),计算x的y次方,pow(2 ...

  10. yii的学习笔记 基本结构 自用

    Yii 学习笔记 W:YII是什么? Q:Yii 是一个基于组件的高性能 PHP 框架,用于快速开发大型 Web 应用.它使Web开发中的 可复用度最大化,可以显著提高你的Web应用开发速度.Yii ...

随机推荐

  1. 第六章节 BJROBOT 动态导航壁障

    导航前说明:一定要确保你小车在构建好地图的基础上进行! 1.把小车平放在你想要构建地图区域的地板上,打开资料里的虚拟机,打开一个终端, ssh 过去主控端启动 roslaunch znjrobot b ...

  2. ZooKeeper集群“脑裂”

    ZooKeeper 集群节点为什么要部署成奇数ZooKeeper 容错指的是:当宕掉几个ZooKeeper节点服务器之后,剩下的个数必须大于宕掉的个数,也就是剩下的节点服务数必须大于n/2,这样Zoo ...

  3. Prometheus集群介绍-1

    Prometheus监控介绍 公司做教育的,要迁移上云,所以需要我这边从零开始调研加后期维护Prometheus:近期看过二本方面的prometheus书籍,一本是深入浅出一般是实战方向的:官方文档主 ...

  4. git切换分支后远程提交报错

    切换分支后提交,报错如下 解决办法

  5. 商品类型的下拉框绑定一个事件,通过ajax获取属性

    html代码这么写 <!-- 商品属性 --> <table cellspacing="1" cellpadding="3" width=&q ...

  6. spring cache 学习——@CachePut 使用详解

    1. 功能说明 当需要在不影响方法执行的情况下更新缓存时,可以使用 @CachePut,也就是说,被 @CachePut 注解的缓存方法总是会执行,而且会尝试将结果放入缓存(当然,是否真的会缓存还跟一 ...

  7. #2020征文-TV# Tab切换选项卡同时更换内容

    Tab选项卡是应用程序中最最常用,也是最普遍存在的一种布局形态,无论是在PC端还是在移动端,都是一种清晰明了,层级关系简单的,能够使用户明确所处位置.Tab选项卡可以置于页面的底部,比如微信底部选项卡 ...

  8. 配置Oracle数据库和监听随Linux系统自启动【转】

     配置Oracle数据库和监听随Linux系统自启动     在某些情况下需要在Linux操作系统上提供一种无人值守的随机启动Oracle的功能,目的也许仅仅是为了帮助那些对Oracle细节非常不关心 ...

  9. LeetCode234 回文链表

    请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 进阶:你能否用 O(n) 时间复杂 ...

  10. LeetCode872. 叶子相似的树

    题目 1 class Solution { 2 public: 3 vector<int>ans1; 4 vector<int>ans2; 5 bool leafSimilar ...