什么是Hibernate?

- Hibernate是我们JavaEE开发中的DAO层框架

- DAO【Data Access Object】 数据访问对象层

- 在DAO层,访问数据库,进行CRUD操作

- Hibernate是对JDBC的封装,最大的好处就是不用手写SQL


ORM思想?

即:Object Relation Mapping 对象关系映射

- 数据库结构和Java语言结构形成关系映射

- 一张数据表对应了一个JavaBean【实体类Entity or Pojo】

- 一张表的一个字段【列】对应了JavaBean的一个属性

- 一张表的一个记录对应了JavaBean的一个实例


什么是POJO、Entity、JavaBean?

- POJO(Plain Ordinary Java Object) 普通Java对象

- Entity 实体的,即实体类

- JavaBean

用于在Java中构建映射数据库的对应结构,

数据库的操作可以被Java程序控制


回顾原生JDBC的操作

import org.junit.Test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet; /**
* @author ArkD42
* @file Hibernate
* @create 2020 - 05 - 10 - 8:50
*/
public class OriginalJdbc { @Test
public void jdbc() throws Exception { // 注册驱动 MySQL5.0+ 可以不注册了
// Class.forName("com.mysql.cj.jdbc.Driver"); // 创建连接
Connection connection = DriverManager.getConnection(
"jdbc:mysql:///ssm?serverTimezone=Asia/Shanghai",
"root",
"123456"
); // 编写SQL 创建预编译SQL对象并注入
String sql = "SELECT * FROM user;";
PreparedStatement preparedStatement = connection.prepareStatement(sql); // 查询返回结果集,增删改返回结果记录数
ResultSet resultSet = preparedStatement.executeQuery(); // 对查询的结果集进行处理 // 释放资源
preparedStatement.close();
connection.close();
}
}

对结果集的处理最好的办法就是使用ORM对数据表映射出一个Java实体类

我们使用这个类来对应结果集接收数据,以便我们方便的操作和处理

再没有ORM思想的情况下,我们能想到的就是以容器来处理

例如个单个记录的多个字段与值,因为字段是唯一的,值可能重复

那这个特性我们可以是用Map容器来存储一个记录,

如果有若干个结果集记录,我们就对Map再进行一个组合,封装进List容器处理


改正初学时的JDBC工具类:

当时写的是在静态代码块里面,如果连接对象资源释放了,静态连接对象的引用会空指针

所以不能写一个静态连接对象的引用

而是直接写进封装的方法里面获取

package cn.dai.util;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties; /**
* @author ArkD42
* @file Hibernate
* @create 2020 - 05 - 10 - 9:04
*/
public class JdbcUtil { static String url ;
static String username;
static String password; static { try {
// Class.forName("com.mysql.cj.jdbc.Driver"); InputStream inputStream = JdbcUtil.class.getClassLoader().getResourceAsStream("jdbc.properties"); Properties properties = new Properties(); properties.load(inputStream); url = properties.getProperty("url");
username = properties.getProperty("username");
password = properties.getProperty("password");
} catch (Exception exception) {
exception.printStackTrace();
}
} public static Connection getConnection(){
try {
return DriverManager.getConnection(url, username, password);
} catch (SQLException sqlException) {
sqlException.printStackTrace();
}
return null;
}
}

持久化

狭义的理解,“持久化”仅仅指把对象永久保存到数据库中

广义的理解,“持久化”包括和数据库相关的各种操作:

保存:把对象永久保存到数据库中。

更新:更新数据库中对象(记录)的状态。

删除:从数据库中删除一个对象。

查询:根据特定的查询条件,把符合查询条件的一个或多个对象从数据库加载到内存中。

加载:根据特定的OID,把一个对象从数据库加载到内存中。

为了在系统中能够找到所需对象,需要为每一个对象分配一个唯一的标识号。

在关系数据库中称之为主键,而在对象术语中,则叫做对象标识(Object identifier-OID).


主流持久化框架:

Hibernate

myBatis

TopLink

OJB

Hibernate  完成对象的持久化操作,允许开发者采用面向对象的方式来操作关系数据库。 消除那些针对特定数据库厂商的 SQL 代码

MyBatis 相比 Hibernate 灵活高,运行速度快 开发速度慢,不支持纯粹的面向对象操作,需熟悉sql语 句,并且熟练使用sql语句优化功能

【Hibernate】01 概述的更多相关文章

  1. 三大框架 之 Hibernate框架概述(概述、配置、核心API)

    目录 Hibernate框架概述 什么是框架 hibernate简介(JavaEE技术三层架构所用到的技术) hibernate是什么框架 ORM hibernate好处 Hibernate基本使用 ...

  2. kafka详解(01) - 概述

    kafka详解(01) - 概述 定义:Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域. 消息队列 MQ传统应用场景之异步处理 使用消 ...

  3. Zookeeper详解(01) -概述

    Zookeeper详解(01) -概述 概念 Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目. Zookeeper从设计模式角度来理解,是一个基于观察者模式设计的分 ...

  4. HIBERNATE 01

    2017年1月8日 {LJ?Dragon}[标题]Hibernate基础知识简介_01 {LJ?Dragon}[Links]Hibernate注解详解 {LJ?Dragon}[Daily]特种部队2, ...

  5. 01 - 概述 VTK 6.0 迁移

    摘要 对vtk版本4和5的管道机制重新架架构的主要目的是:迁移数据对象和算法对象中的管道执行逻辑到一个新集合的类中,我们称这个集合类叫executives.分离数据和执行模型的代码后,可以双双简化修改 ...

  6. Hibernate知识总结(一)——Hibernate原理概述

    一.Hibernate是什么: 它是一个持久化框架,它对JDBC进行了轻量级的封装,简化对数据库的操作,提高开发效率.和另一个持久化框架MyBatis一样,他们操作数据库都是通过一个session对象 ...

  7. 一起学习Hibernate: Hibernate01 —— Hibernate的概述与入门案例

    一 Hibernate的介绍 1 让我们从JDBC与替代它的框架Hibernate进行一下对比. 1.1 JDBC的缺点 1) 代码结构繁琐.每次书写sql语句操作数据库都得需要很多步; 2) 是面向 ...

  8. Redis数据库 01概述| 五大数据类型

    1.NoSQL数据库简介 解决应用服务器的CPU和内存压力:解决数据库服务的IO压力: ----->>> ① session存在缓存数据库(完全在内存里),速度快且数据结构简单: 打 ...

  9. Rhythmk 学习 Hibernate 01 - maven 创建Hibernate 项目之 增删改查入门

    1.环境: Maven :3.1.1 开发工具:Spring Tool Suite 数据库 : Mysql  5.6 2.项目文件结构 文件代码: 2.1 .pom.xml <project x ...

  10. Hive 01 概述、安装配置

    概述 数据仓库:是一个面向主题的.集成的.不可更新的.随时间不变化的数据集合,它用于支持企业或组织的决策分析处理. 数据仓库的结构和建立过程: 数据源 数据存储及管理 ETL Extract 提取 T ...

随机推荐

  1. 箭头函数 函数中的this指向

      // 箭头函数         // 在匿名函数中,使用 => 箭头来替换 关键词 function          // 箭头定义下 () 和 {} 之间         // 等于在使 ...

  2. P1737

    problem \(\text{task 1}\) 要求: 输入:\(a,b\). 输出:\(-2a-2b\). 数据范围:\(|a|,|b| \le 10^9\). 做法: 先把 \(-2\) 提出 ...

  3. C#.NET 读取PFX私钥证书并导出PEM格式私钥

    项目nuget引用 BouncyCastle. 读取证书 X509Certificate2 x509 = new X509Certificate2(lblPfxPath.Text, txtPfxPwd ...

  4. 说一下 JSP 的 4 种作用域?

    page:代表与一个页面相关的对象和属性. request:代表与客户端发出的一个请求相关的对象和属性.一个请求可能跨越多个页面,涉及多个 Web 组件:需要在页面显示的临时数据可以置于此作用域. s ...

  5. Linux Debian安装教程

    Debian 是一个免费的开源操作系统,是最古老的 Linux 发行版之一,于 1993 年由 Ian Murdock 创建.它采用了自由软件协议,并且由志愿者社区维护和支持.Debian 的目标是创 ...

  6. python批量读取excel csv文件插入mysql数据库

    #python批量读取excel csv文件插入mysql数据库 import os import csv import argparse import pymysql import sys clas ...

  7. Windows CSC提权漏洞复现(CVE-2024-26229)

    漏洞信息 Windows CSC服务特权提升漏洞. 当程序向缓冲区写入的数据超出其处理能力时,就会发生基于堆的缓冲区溢出,从而导致多余的数据溢出到相邻的内存区域.这种溢出会损坏内存,并可能使攻击者能够 ...

  8. 【译】VisualStudio.Extensibility 17.10:用 Diagnostics Explorer 调试您的扩展

    想象一下,创建的扩展比以往任何时候都运行得更快.更流畅!如果您最近还没有跟上,我们一直在努力改进 VisualStudio. Extensibility SDK.VisualStudio. Exten ...

  9. python重拾第十三天-那就做个堡垒机吧

    本节内容 项目实战:运维堡垒机开发 前景介绍 到目前为止,很多公司对堡垒机依然不太感冒,其实是没有充分认识到堡垒机在IT管理中的重要作用的,很多人觉得,堡垒机就是跳板机,其实这个认识是不全面的,跳板功 ...

  10. 2-SET详解

    前置知识 SET问题的标准定义:在计算机科学中,布尔可满足性问题(有时称为命题可满足性问题,缩写为SATISFIABILITY或SAT)是确定是否存在满足给定布尔公式的解释的问题.(全是废话) 说人话 ...