一,概览

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. SpringSecurity配置文件

    @EnableWebSecurity public class seccurityConfig extends WebSecurityConfigurerAdapter { @Override pro ...

  2. ORA-28001: the password has expired解决方法

    Oracle提示错误消息ORA-28001: the password has expired,是由于Oracle11G的新特性所致, Oracle11G创建用户时缺省密码过期限制是180天(即6个月 ...

  3. Tomcat 配置Vue history模式

    Tomcat 配置Vue  history模式 近日 , 在使用 Tomcat 部署Vue项目时 , 刷新项目出现404的异常 . 原因是 Vue使用了history模式 , 而tomcat没有相关配 ...

  4. Azure Terraform(五)利用Azure DevOps 实现自动化部署基础资源

    一,引言 上一篇我们结合学习 Azure Traffic Manger 的内容,做了一个负载均衡的基础设施架构.通过 Terraform 部署执行计划,将整个 Azure Traffic Manage ...

  5. 【Linux】E297: Write error in swap file 解决办法

    今天登陆到服务器上,发现通过vi 打开文件就会报错: E297: Write error in swap file E303: Unable to open swap file for "c ...

  6. 【System】I/O密集型和CPU密集型工作负载之间有什么区别

    CPU密集型(CPU-bound) CPU密集型也叫计算密集型,指的是系统的硬盘.内存性能相对CPU要好很多,此时,系统运作大部分的状况是CPU Loading 100%,CPU要读/写I/O(硬盘/ ...

  7. kubernets之pv以及pvc

    一 持久卷以及持久卷声明的由来 由于不管是哪种卷,开发者都需要提前预知kubernets集群里面的存储类型,这样就在一定程度上违背了kubernets集群的设计理念,kubernets的设计理念是在由 ...

  8. XSS - Labs 靶场笔记(上)

    上周在网上看到的一个XSS平台,刷一波<doge Less - 1: 1.进入主界面,由图二可知是GET请求,提交name=test,回显在页面 2.查看源代码可知 没有做任何过滤,显然存在反射 ...

  9. 【译】Async/Await(三)——Aysnc/Await模式

    原文标题:Async/Await 原文链接:https://os.phil-opp.com/async-await/#multitasking 公众号: Rust 碎碎念 翻译 by: Praying ...

  10. [Usaco2005 Dec]Scales 天平

    题目描述 约翰有一架用来称牛的体重的天平.与之配套的是N(1≤N≤1000)个已知质量的砝码(所有砝码质量的数值都在31位二进制内).每次称牛时,他都把某头奶牛安置在天平的某一边,然后往天平另一边加砝 ...