一,概览

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. 风炫安全web安全学习第三十六节课-15种上传漏洞讲解(一)

    风炫安全web安全学习第三十六节课 15种上传漏洞讲解(一) 文件上传漏洞 0x01 漏洞描述和原理 文件上传漏洞可以说是日常渗透测试用得最多的一个漏洞,因为用它获得服务器权限最快最直接.但是想真正把 ...

  2. Tomca7t服务器 配置HTTP和HTTPS 同时访问

    (首先你要有 ssl 证书 ,我是阿里的 ) 查看申请ssl证书(https://www.cnblogs.com/lxf-mw/p/14261303.html) 一.下载 tomcat证书(两个文件) ...

  3. HBase 底层原理详解(深度好文,建议收藏)

    HBase简介 HBase 是一个分布式的.面向列的开源数据库.建立在 HDFS 之上.Hbase的名字的来源是 Hadoop database,即 Hadoop 数据库.HBase 的计算和存储能力 ...

  4. 【Flutter】布局类组件之对齐和相对定位

    前言 如果只想简单的调整一个子元素在父元素中的位置的话,使用Align组件会更简单一些. 接口描述 const Align({ Key key, // 需要一个AlignmentGeometry类型的 ...

  5. 一文带你探究Sentinel的独特初始化

    摘要:本系列通过作者对Redis Sentinel源码的理解,详细说明Sentinel的代码实现方式. Redis Sentinel 是Redis提供的高可用模型解决方案.Sentinel可以自动监测 ...

  6. web网上书店总结(jsp+servlet)

    web网上书店总结 前端的首页.效果如下: 基本上按照页面有的内容对其实现功能.按照用户划分功能模块,有后台管理员和普通用户,登录的时候会判断账户的类别,例如0权限代表普通用户登录,1权限代表管理员登 ...

  7. python学习笔记 | PyCharm出现卡顿解决方法

    问题:使用pycharm时常出现 the IDE is running low on memory 的问题 表示pycharm这款IDE使用内存不足 需要在系统内存充足的情况下扩充IDE memory ...

  8. RPC 是通信协议吗 ?→ 我们来看下它的演进过程

    开心一刻 一实习小护士给我挂针,拿着针在我胳膊上扎了好几针也没找到血管 但这位小姑娘真镇定啊,表情严肃认真,势有不扎到血管不罢休的意思 十几针之后,我忍着剧痛,带着敬畏的表情问小护士:你这针法跟容嬷嬷 ...

  9. GitLab-CI/CD入门实操

    以Spring boot项目为例.传统方式是本地生成jar包,FTP上传服务器,重启服务:如果是内网测试服,也可以在服务器上安装git,在服务器上编译打包.但这都需要人为干预,于是CI/CD就出现了. ...

  10. kafka(一)入门

    一.消息引擎系统 这类系统引以为豪的消息传递属性,像引擎一样,具备某种能量转换传输的能力 消息引擎系统是一组规范,企业利用这组规范在不同系统之间传递语义准确的消息,实现松耦合的异步式数据传递.通俗地讲 ...