手写 Hibernate ORM 框架 00-环境准备

手写框架

类似的还有其他系列,主要用于学习其中的原理。

Hibernate 属于比较早的框架了,后期将实现一套 mybatis。

手写 Hibernate 系列

手写 Hibernate ORM 框架 00-hibernate 简介

手写 Hibernate ORM 框架 00-环境准备

手写 Hibernate ORM 框架 01-注解常量定义

手写 Hibernate ORM 框架 02-实体 Bean 定义,建表语句自动生成

手写 Hibernate ORM 框架 03-配置文件读取, 数据库连接构建

手写 Hibernate ORM 框架 04-持久化实现

手写 Hibernate ORM 框架 05-整体效果测试验证

从零手写组件系列

java 从零手写 spring ioc 控制反转

java 从零手写 spring mvc

java 从零手写 jdbc-pool 数据库连接池

java 从零手写 mybatis

java 从零手写 hibernate

java 从零手写 rpc 远程调用

java 从零手写 mq 消息组件

java 从零手写 cache 缓存

java 从零手写 nginx4j

java 从零手写 tomcat

前言

Hibernate 相信接触过 java 的人都不会陌生。

今天我们一起写一个简化版的 Hibernate,用于加深对此 ORM 工具的理解。

代码地址

java 从零手写 hibernate

环境准备

  • maven

本项目使用 maven 管理 jar 包

  • jdk

jdk 为 1.8

pom.xml

依赖

pom 核心依赖如下:

<dependencies><dependency><groupId>com.github.houbb</groupId><artifactId>heaven</artifactId></dependency><!--============================== OTHER ==============================--><dependency><groupId>junit</groupId><artifactId>junit</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!--dom4j--><dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId></dependency>
</dependencies>

jar 包功能说明

名称作用备注
mysql-connector-java用于连接 mysql 数据库本项目以 mysql 为例子
dom4j用于模拟读取 hibernate.cfg.xml
junit用于单元测试

整体目录结构

便于鸟瞰整个项目

D:.                       
├─java                    
│  └─com                  
│      └─github           
│          └─houbb                   
│              └─hibernate           
│                  │  Session.java   
│                  │  Table.java     
│                  │                 
│                  ├─annotations     
│                  │      Column.java
│                  │      Entity.java
│                  │      GenerateValue.java
│                  │      Id.java
│                  │
│                  ├─constants
│                  │      HibernateConstant.java
│                  │      TypeMap.java
│                  │
│                  ├─model
│                  │      User.java
│                  │
│                  └─util
│                          CollectionUtil.java
│                          ConnectionUtil.java
│                          FieldUtil.java
│                          ReflectionUtil.java
│                          StringBuilderUtil.java
│                          StringUtil.java
│                          TableUtil.java
│
└─resources

小结

本文主要介绍了基本的依赖,和项目整体结构。

后续我们将用几节的文章,介绍一下如何实现一个简单版本的 hibernate

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/51805.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Lc62---3024.三角形类型(排序)--java版

1.题目 2.思路 就是用选择结构进行if-else if的编写。 除了题目的条件&#xff0c;还要判断是不是三角形&#xff08;两边之和小于等于第三边&#xff0c;也无法构成三角形&#xff09; 3.代码实现 class Solution {public String triangleType(int[] nums) {if(nums.length…

命令行使用ADB,不用root,完美卸载小米预装软件

ADB安装与运行 install java 下载安装 注意选择JDK17以上版本 https://www.oracle.com/java/technologies/downloads/#jdk22-windows 选择中间的安装文件下载 编辑系统变量 C:\Program Files (x86)\Java\jdk-22 C:\Program Files (x86)\Java\jdk-22\bin 把C:\Progra…

nginx 启动 ssl 模块

文章目录 前言nginx 启动 ssl 模块1. 下载2. 启动 ssl 模块 步骤3. 验证前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!! nginx 启动 ssl 模块 1. 下载 下载…

Scrapy 爬取旅游景点相关数据(五)

本期内容&#xff1a;&#xff08;1&#xff09;爬取日本其他城市数据存入数据库&#xff08;2&#xff09;爬取景点评论数据 1 爬取其他城市景点数据 只爬取一个城市的数据对于做数据可视化系统可能是不够的&#xff0c;因为数据样本量少嘛&#xff0c;本期来爬取其他城市的景…

1.Redis介绍

redis是一个键值型数据库。 是一种nosql数据库&#xff0c;非关系型数据库。 sql数据库 1.字段类型是固定的。 2.表的结构是固定的。表数据量特别大的时候&#xff0c;去修改表结构会出现问题。也会导致业务逻辑的修改。 3.每个字段有一定的约束&#xff0c;比如唯一约束&…

【LeetCode】二叉树的锯齿形层序遍历

目录 一、题目二、解法完整代码 一、题目 给你二叉树的根节点 root &#xff0c;返回其节点值的 锯齿形层序遍历 。&#xff08;即先从左往右&#xff0c;再从右往左进行下一层遍历&#xff0c;以此类推&#xff0c;层与层之间交替进行&#xff09;。 示例 1&#xff1a; 输…

[Python] (中上难度) 五道高质量例题+详解 算法 奇数个数 求值 猴子分桃 淘汰游戏

1.奇数个数 题目&#xff1a; 计算0—7所能组成的 解析&#xff1a; 代码一&#xff1a; 假设范围为1-8位数的数字&#xff0c;假设sums4是因为个位时只有1&#xff0c;3&#xff0c;5&#xff0c;7四个奇数&#xff0c;循环从两位数开始遍历&#xff1a; 当 j < 2 时…

tof系统标定流程之lens标定

1、lens标定详解 为什么在标定tof时需要进行lens的标定,可以说lens标定是一个必不可少的步骤,tof模组也是有镜头的,镜头的畸变会导致进入的光线出现偏差,最终照射到tof芯片表面导致深度图的分布出现畸变,通常是枕形畸变。例外一个用途在于,在计算fppn误差环节需要知道镜头…

选股回测思路

数据处理 对日线数据进行数据清理 原来的日线数据包括交易日期、股票代码、股票名称、开盘价、收盘价、最高价、最低价首先计算涨跌幅&#xff0c;涨跌幅 &#xff08;收盘价 - 前一天收盘价&#xff09; / 收盘价然后计算当日涨跌幅&#xff0c;当日涨跌幅 &#xff08;收盘…

导游职业资格考试真题题库

导游职业资格考试真题题库 31.我国目前试点运行的10个TIR口岸中&#xff0c;有6个位于&#xff08;&#xff09;。 A.甘肃 B.新疆 C.宁夏 D.黑龙江 答案&#xff1a;B 解析&#xff1a;我国目前试点运行的10个TIR口岸中&#xff0c;有6个位于新疆。 32.下列新疆节日中&…

LangGPT结构化提示词编写实践

当然&#xff0c;我们可以从几个方面来讲解如何编写LangGPT的结构化提示词&#xff1a; 1. **明确目标**&#xff1a; - **目的**&#xff1a;确定提示词的最终目标&#xff0c;比如生成文本、回答问题、撰写报告等。 - **任务描述**&#xff1a;清晰描述任务&#xf…

随机森林(Random Forest)预测模型及其特征分析(Python和MATLAB实现)

## 一、背景 在大数据和机器学习的快速发展时代&#xff0c;数据的处理和分析变得尤为重要。随着多个领域积累了海量数据&#xff0c;传统的统计分析方法常常无法满足复杂问题的需求。在这种背景下&#xff0c;机器学习方法开始广泛应用。随机森林&#xff08;Random Forest&am…

在 Kali Linux 虚拟机中实现主机代理共享的详细指南

Kali Linux 是网络安全和渗透测试领域中广泛使用的操作系统。它提供了丰富的工具和灵活的环境&#xff0c;适合各种网络安全任务。在某些情况下&#xff0c;您可能需要通过主机的代理服务器来实现特定的网络配置&#xff0c;以便更好地保护隐私或进行网络测试。这篇文章将详细介…

langchain 入门指南 - 实现一个多模态 chatbot

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 在前面的文章中&#xff0c;我们学会了如何通过 langchain 实现本地文档库的 QA&#xff0c;又或者通过 langchain 来实现对话式的问答系…

解决Centos不支持docker命令行tab提示问题!!!

一、CentOS不支持Docker Tab提示 在使用CentOS操作系统时&#xff0c;有些用户可能会遇到不能自动补全Docker命令的问题。这是因为CentOS默认不支持Docker Tab提示功能&#xff0c;需要手动配置才能实现。在这篇科普文章中&#xff0c;我们将介绍如何解决这个问题&#xff0c;…

typescrip 定义函数

// 参数默认值和可选值 function fn1(name: string, age?: number): string {// 那么name必传&#xff0c;age选传&#xff0c;返回为字符串return ${name}${age}; }; fn1("全易"); fn1("全易", 18); // fn1("全易", 18, "在北京") …

GCA检查设计约束流程

文章目录 一、什么是GCA二、GCA流程1 .启动GCA2 .设置lib3 .读design并链接design4 .读SDC5 .analyze_design6 .报告或图形化界面分析结果 一、什么是GCA Galaxy Constraint Analyzer&#xff0c;简称GCA&#xff0c;是一个专门检查设计约束的工具&#xff0c;现在已经集成在P…

MySQL使用教程 最最最实用的零基础教程 直接从安装开始教!!!!

数据构成了我们日益数字化的社会基础。想象一下&#xff0c;从移动应用和银行系统到搜索引擎&#xff0c;再到如 ChatGPT 这样的先进人工智能聊天机器人&#xff0c;这些工具若没有数据支撑&#xff0c;将寸步难行。你有没有好奇过这些海量数据都存放在哪里呢&#xff1f;答案正…

Vue3学习总结

学习Vue3&#xff0c;最好的地方是官网&#xff1a;https://cn.vuejs.org/guide/quick-start.html 我这里只是自己的总结&#xff0c;以加深自己的学习记忆。如果其他人想学习Vue3&#xff0c;建议直接去官网学习。 1、已创建好的Vue3工程再次启动的命令&#xff1a;npm run de…