【Hibernate】01 概述
什么是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 概述的更多相关文章
- 三大框架 之 Hibernate框架概述(概述、配置、核心API)
目录 Hibernate框架概述 什么是框架 hibernate简介(JavaEE技术三层架构所用到的技术) hibernate是什么框架 ORM hibernate好处 Hibernate基本使用 ...
- kafka详解(01) - 概述
kafka详解(01) - 概述 定义:Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域. 消息队列 MQ传统应用场景之异步处理 使用消 ...
- Zookeeper详解(01) -概述
Zookeeper详解(01) -概述 概念 Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目. Zookeeper从设计模式角度来理解,是一个基于观察者模式设计的分 ...
- HIBERNATE 01
2017年1月8日 {LJ?Dragon}[标题]Hibernate基础知识简介_01 {LJ?Dragon}[Links]Hibernate注解详解 {LJ?Dragon}[Daily]特种部队2, ...
- 01 - 概述 VTK 6.0 迁移
摘要 对vtk版本4和5的管道机制重新架架构的主要目的是:迁移数据对象和算法对象中的管道执行逻辑到一个新集合的类中,我们称这个集合类叫executives.分离数据和执行模型的代码后,可以双双简化修改 ...
- Hibernate知识总结(一)——Hibernate原理概述
一.Hibernate是什么: 它是一个持久化框架,它对JDBC进行了轻量级的封装,简化对数据库的操作,提高开发效率.和另一个持久化框架MyBatis一样,他们操作数据库都是通过一个session对象 ...
- 一起学习Hibernate: Hibernate01 —— Hibernate的概述与入门案例
一 Hibernate的介绍 1 让我们从JDBC与替代它的框架Hibernate进行一下对比. 1.1 JDBC的缺点 1) 代码结构繁琐.每次书写sql语句操作数据库都得需要很多步; 2) 是面向 ...
- Redis数据库 01概述| 五大数据类型
1.NoSQL数据库简介 解决应用服务器的CPU和内存压力:解决数据库服务的IO压力: ----->>> ① session存在缓存数据库(完全在内存里),速度快且数据结构简单: 打 ...
- Rhythmk 学习 Hibernate 01 - maven 创建Hibernate 项目之 增删改查入门
1.环境: Maven :3.1.1 开发工具:Spring Tool Suite 数据库 : Mysql 5.6 2.项目文件结构 文件代码: 2.1 .pom.xml <project x ...
- Hive 01 概述、安装配置
概述 数据仓库:是一个面向主题的.集成的.不可更新的.随时间不变化的数据集合,它用于支持企业或组织的决策分析处理. 数据仓库的结构和建立过程: 数据源 数据存储及管理 ETL Extract 提取 T ...
随机推荐
- Java中Calendar类与SimpleDateFormat类的介绍
目录 Calendar类(关于日期的一些方法) get(Calendar.XXX); get(Calendar.Year) get(Calendar.MONTH) get(Calendar.DAY_O ...
- ETL工具-nifi干货系列 第十二讲 nifi处理器UpdateRecord使用教程
1.上一节课我们讲解了nifi处理器UpdateAttribute,专门用来更新flowFile的属性字段.本节课我们一起来学习UpdateRecord,该处理器用来更新flowFile的流文件内容数 ...
- kettle从入门到精通 第三十四课 kettle 错误处理
1.我们在平常写应用程序的时候,需要主动捕获异常或者错误,不然程序有可能异常退出.同样kettle 也支持异常或者错误处理,下图展示的是在批量插入数据的时候捕获异常,如唯一健冲突,死锁等,并将错误信息 ...
- (编程语言界的丐帮 C#).NET Framework 读取Excel到DataTable
(编程语言界的丐帮 C#).NET Framework 读取Excel到DataTable 生成DataTable到Excel,支持 2007 .xlsx,2003 .xls. nuget 引用 NP ...
- 华为云短信服务教你用C++实现Smgp协议
本文分享自华为云社区<华为云短信服务教你用C++实现Smgp协议>,作者:张俭. 引言&协议概述 中国联合网络通信有限公司短消息网关系统接口协议(SGIP)是中国网通为实现短信业务 ...
- Javascript高级程序设计第三章 | ch3 | 阅读笔记
语言基础 语法 标识符 注释 // /* */ 严格模式 // 也可以单独指定在一个函数中进行 'use strict' 语句 语句末尾分号不是必须的,但是最好加上 加上分号方便开发者删除空行压缩代码 ...
- SingletonKit单例源码阅读学习
阅读学习QFramwork中的SingletonKit源码. Singleton 普通类的单例 作为最常用的单例模块,通过继承单例泛型类来实现,需要私有构造: //使用第一种接口单例方式 intern ...
- Python中的属性
Python中的属性主要分为类属性,对象属性. 1.类属性 类属性:类所有,所有的实例对象都能够共享,类定义时就直接指定的属性,能通过类名和实力对象名访问,当当前的类属性被实例对象通过对象名.属性名的 ...
- 使用Kubesec检查YAML文件安全
目录 一.系统环境 二.前言 三.Kubesec简介 四.使用Kubesec检查YAML文件安全 五.总结 一.系统环境 本文主要基于Kubernetes1.22.2和Linux操作系统Ubuntu ...
- 【资料分享】Xilinx Zynq-7010/7020工业核心板规格书(双核ARM Cortex-A9 + FPGA,主频766MHz)
1 核心板简介 创龙科技SOM-TLZ7x是一款基于Xilinx Zynq-7000系列XC7Z010/XC7Z020高性能低功耗处理器设计的异构多核SoC工业核心板,处理器集成PS端双核ARM Co ...