@hibernate入门干货

一.Hibernate基础知识

纯干货,没有任何添加素

1.什么是Hibernate?

Hibernate是一个开放源代码的对象关系映射框架,它对 JDBC进行了非常轻量 级的对象封装,它将POJO类与数据库表建立映射关系,是一个全自动的ORM 框架,hibernate可以自动生成SQL语句,自动执行。Hibernate可以应用在任 何使用 JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP 的Web应用中使用。

2.什么是持久化?

狭义的理解:“持久化”仅仅指把域对象永久保存到数据库中; 广义的理解,“持久化”包括和数据库相关的各种操作。
● 保存:把域对象永久保存到数据库。
● 更新:更新数据库中域对象的状态。
● 删除:从数据库中删除一个域对象。
● 加载:根据特定的OID(对象ID),把一个域对象从数据库加载到内存。
● 查询:根据特定的查询条件,把符合查询条件的一个或多个域对象从数据库加 载内在存中。

3.为什么要持久化?

持久化技术封装了数据访问细节,为大部分业务逻辑提供面向对象的API。
● 通过持久化技术可以减少访问数据库数据次数,增加应用程序执行速度;
● 代码重用性高,能够完成大部分数据库操作;
● 松散耦合,使持久化不依赖于底层数据库和上层业务逻辑实现,更换数据库时 只需修改配置文件而不用修改代码。

4.Java中的ORM框架有哪些?

ORM(object relation mapping)框架的作用是将java对象和数据库的对象 (表、视图)之间建立起映射关系。 结果:在java后台操作java对象就相当于操作数据库的表了。 常见的Java中的ORM框架有: Hibernate\MyBatis\JPA

5.Hibernate中的数据对象操纵语言HQL、SQL、HQL、PL/SQL、JDBC区别

hql:操作的是对象和属性; sql:操作的是表和字段,属于面向对象的查询语言。 HQL是Hibernate Query Language的缩写,格式如下:
[select/update/delete……]
from Entity [where……]
[group by……] [having……]
[order by……]
1 hql : FROM user where id=‘1’;
2 sql : FROM TB_USER where id= ‘1’

6.Hibernate阻抗不匹配问题

为了解决数据库和Java之间的阻抗不匹配问题,hibernate可以配置完成有数据库 类型到Java对象类型的转换。 java基础类、Java包装类的差别(略)
MySQL数据库类型 <=> Java对象类型(建议使用Java包装类)
int <=> Integer long <=> Long
float\decimal\number\numberic<=> Float
float <=> Float
double <=> Double
char\varchar <=> String
tiny blob\medium blob\long blob<=> byte[]
boolean <=> Boolean
date\time\timestamp <=> date\time

二、Hibernate工作原理

1.通过 Configuration().configure(); 读取并解析 hibernate.cfg.xml 配 置文件。
2.由hibernate.cfg.xml中的 <mappingresource=“xx/xx/xxx.hbm.xml”/> 读取解析映射信息。
3.通过 config.buildSessionFactory(); 得到 sessionFactory。 4.sessionFactory.openSession();得到 session。 5.session.beginTransaction(); 开启事务。 6.session.getTransaction().commit(); 提交事务
7.关闭 session.close;

三、Hibernate持久化类与 主键生成策略

在 hbm.xml 中可以设置的主键生成策略如下:
1.increment: 代理主键。由 hibernate 维护一个变量,每次生成主键时自 动以递增。 问题:如果有多个应用访问一个数据库,由于每个应用维护自己 的 主键。此时主键可能冲突。建议不采用。
2.identity:代理主键。由底层数据库生成维护。条件是数据库支持自动增长 数据类型。 比如:mysql 的自增主键,oracle 不支持主键自动生成。如果数据 库支持自增建议采用。注解方式时可以采用这个代替native。
3.sequence:代理主键。Hibernate 根据底层数据库序列生成标识符。条件 是数据库支持序 列。比如 oracle 的序列。如果数据库支持序列建议采用。 4.native :代理主键。根据底层数据库对自动来选择 identity、 sequence、hilo:生成主键策略的控制权由 hibernate 控制。注意在 hibernate教程中采用此选项。
5.uuid:代理主键。Hibernate 采用 128 位的 UUID 算法来生成标识符。该 算法能够在网络环境中生成唯一的字符串标识符。此策略可以保证生成主键的唯 一性,并且提供了最好的数据库插入性能和数据库平台的无关性。建议采用。
6.assigned:自然主键。由 java 程序负责生成标识符。不建议采用。

四、Hibernate事务管理

1.事务特性 (ACID) 事务具有ACID属性
(1)原子性(Atomic):事务由一个或多个行为绑在一起组成,好像是一个单独 的工作单元。原子性确保在事务中的所有操作要么都发生,要么都不发
(2)一致性(Consistent):一旦一个事务结束了(不管成功与否),系统所处的状 态和它的业务规则是一致的。即数据应当不会被破坏。
(3)隔离性(Isolated):事务应该允许多个用户操作同一个数据,一个用户的 操作不会和其他用户的操作相混淆。
(4)持久性(Durable):一旦事务完成,事务的结果应该持久化。 事务的ACID特性是由关系数据库管理系统(RDBMS)来实现的。
2.事务的并发问题: 第一类丢失更新:撤消一个事务时,把其它事务已提交的更新的数据 覆盖了。脏读:一个事务读到另一个事务未提交的更新数据。 幻读:一个事务执行两次查询,但第二次查询比第一次查询多出了一 些数据行。 不可重复读:一个事务两次读同一行数据,可是这两次读到的数据不 一样。
3.事务的隔离级别: 隔离性是通过数据库的表或字段加锁实现的。事务隔离级别分为以下四种:
(1) Read Uncommitted 读未提交
一个事务可以读取另一个事务已更新但未提交的数据,但另一事务提交前 不允许写入。
(2) Read committed 读提交(SQL Server、oracle默认事务) 一个事务仅可以读取另一个事务已提交的更新数据。
(3) Repeatable read 重复读 一个事务已读取的数据不允许其他事务的写入。
(4)Serializable 序列化 所以事务序列化进行,不能并发执行。
4.hibernate中设置事务的隔离级别:
1.读未提交
2.读已提交
3.可重复读
4.串行化

hibernate入门干货相关推荐

  1. 杨老师课堂之JavaEE三大框架Hibernate入门第一课

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/kese7952/article/details/80998421 本篇任务 1. 使用Hiberna ...

  2. Hibernate4实战 之 第一部分 Hibernate入门

    第一部分:Hibernate入门 Hibernate是什么 Hibernate是一个轻量级的ORMapping框架 ORMapping原理(Object Relational Mapping) ORM ...

  3. Hibernate 入门之轻松上手 选择自 chainshun 的 Blog

    我找到的所有Hibernate入门文章分为三类:          1.剖析的很透彻,但是例子里面只有主要代码,不能编译执行.          2.举的例子只能在某种环境中执行,例如tomcat.  ...

  4. Hibernate入门这一篇就够了

    前言 本博文主要讲解介绍Hibernate框架,ORM的概念和Hibernate入门,相信你们看了就会使用Hibernate了! 什么是Hibernate框架? Hibernate是一种ORM框架,全 ...

  5. Hibernate入门案例及增删改查

    一.Hibernate入门案例剖析: ①创建实体类Student 并重写toString方法 public class Student {private Integer sid;private Int ...

  6. hibernate入门二之单表操作

    友情提醒:以下所有的操作都是在hibernate入门一的基础上操作的,参考链接:https://www.cnblogs.com/lindaiyu/p/10990525.html 单一主键 assign ...

  7. SSH Chapter 04 Hibernate 入门

    SSH Chapter 04 Hibernate入门 笔记 Hibernate 知识体系图: 本章目标: 理解类和表的映射关系 掌握单表的增删改 掌握按主键查询 理解持久化对象的状态及其转换 技术内容 ...

  8. Hibernate入门4.核心技能

    Hibernate入门4.核心技能 20131128 代码下载 链接: http://pan.baidu.com/s/1Ccuup 密码: vqlv 前言: 前面学习了Hibernate3的基本知识, ...

  9. Hibernate入门5持久化对象关系和批量处理技术

    Hibernate入门5持久化对象关系和批量处理技术 20131128 代码下载 链接: http://pan.baidu.com/s/1Ccuup 密码: vqlv 前言: 前面学习了Hiberna ...

最新文章

  1. java 为什么需要常量池
  2. Word2016如何取消宏已被禁用的提示
  3. 删除Linux的依赖库并进入救援模式恢复
  4. C语言一维数组、二维数组、结构体的初始化
  5. 有两个不同list,需要对比两个list内容且输出差异的内容
  6. 教你玩转CSS border(边框)
  7. Linux学习:第六章-Linux网络配置
  8. Juypter 打开其他路径文件
  9. 077 Combinations 组合
  10. 计算机毕业设计asp.net的旅游网站(源码+系统+mysql数据库+Lw文档)
  11. ❤️Docker中只需2步即可拥有Oracle 10G环境,史上最快部署❤️
  12. 台式计算机diy,DIY组装台式电脑经验分享学习篇
  13. 评论:中国网络游戏虚拟物品交易的前景
  14. 7年一回首,流年似水
  15. 一个汉字真的由两个字节存放吗?
  16. PXE+Kickstart 无人值守安装系统
  17. 高级计算机网络 外文文献,计算机网络新技术外文文献翻译
  18. 如何搭建和使用代理服务器
  19. 腾讯 Robotics X 轮腿式机器人
  20. 武汉计算机学院 曹建文,实验室与设备管理处

热门文章

  1. 【前端】wepy/mpvue/taro/uni-app,多端开发框架哪家强?
  2. [附源码]Node.js计算机毕业设计房地产销售系统Express
  3. 9277计算机音乐,抖音9277伴奏深七演唱的歌曲完整版分享_9277背景音乐mp3原声版...
  4. 【Linux伊甸园】JPEG病毒如何发作?都是内存地址惹的祸
  5. dedecms织梦模板文件名介绍与说明
  6. 华为三层交换机配置不同网段互通
  7. The located assembly's manifest definition does not match the assembly reference
  8. 商家自研OMS奇门对接-SDK踩坑录
  9. h3c BGP路由控制实验
  10. 加密解密数字证书相关知识