一,概览

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. JVM个人总结一

    看了深入理解JAVA虚拟机已经有一段时间了  发现很多东西如果不总结  脑子里总是没有一条线贯穿起来,也比较模糊混乱,所以还是有必要利用逻辑思维图总结下. JVM看了下  大致比较重要的分内存区域划分 ...

  2. zigzag压缩算法

    前文 Base 128 Varints 编码(压缩算法) 介绍了Base 128 Varints这种对数字传输的编码,了解到了这种编码方式是为了最大程度压缩数字的.但是,在前文里,我们只谈论到了正数的 ...

  3. .Net Core — 依赖注入

    在.NET Core 中 依赖注入Dependency-Injection)作为基础知识,在.Net Core中无处不在:这么重要的知识接下来就了解和在.Net Core中使用. 一.依赖注入 说到依 ...

  4. 改进你的c#代码的5个技巧(二)

    在本文中,我将向你展示c#编程的5个最佳实践.我从日常编程经验中学到了这些实践.我在release模式下测试了所有的代码,并在开发环境稳定后进行了截屏.我想你会喜欢这些建议的. 在使用数据类型之前选择 ...

  5. skynet游戏服务器框架分享

    分享下我之前做的服务器框架;  游戏在线最高3万;  物理机I7的3台阿里云分服;性能及其强劲; 框架: 底层基于比较流行的skynet,基础采用c语言,脚本lua,部分服务golang; Skyne ...

  6. Java学习_泛型

    什么是泛型. Java标准库提供的ArrayList内部就是一个Object[]数组,配合存储一个当前分配的长度,就可以充当"可变数组". public class ArrayLi ...

  7. Linux复制某个目录下结构

    Linux复制某个目录下结构 ​结合tree命令把当前目录下的文件夹路径存储到document.txt文件,然后再使用mkdir命令把document.txt文件下的目录输入创建: tree -fid ...

  8. Linux学习笔记 | 常见错误之VMware启动linux后一直黑屏

    方法1: 宿主机(windows)管理员模式运行cmd 输入netsh winsock reset 然后重启电脑 netsh winsock reset命令,作用是重置 Winsock 目录.如果一台 ...

  9. 不要把file,process或者super权限授予管理员以外的账号

    file权限的主要作用是通过select ....into outfile 写到服务器上具有写权限的目录下,作为文本格式存放,具有权限的目录也就是启动mysql时的用户权限目录.(没有理解) 可以将有 ...

  10. 【一天一个知识点系列】- Http之状态码

    状态码 简介 HTTP 状态码负责表示客户端 HTTP 请求的返回结果. 标记服务器端的处理是否正常. 通知出现的错误等工作 作用及类别 作用:状态码告知从服务器端返回的请求结果 状态码的类别 注意: ...