Spring Boot 嵌入式服务器、Hibernate 关系和 Spring Data 全解析
嵌入式服务器
Spring Boot
的嵌入式服务器功能是一项方便而强大的功能,它允许你在应用程序中直接运行 Web 服务器,无需将其部署到单独的独立 Web 服务器中。这使得开发、测试和部署 Web 应用程序变得容易,而且它还是轻量级的、易于启动和停止的,易于配置。
Hibernate
Hibernate
是一个 Java 框架,它提供了对象关系映射到面向对象模型到关系数据库。这意味着 Hibernate
提供了从 Java 类到数据库表的映射,同时还提供了数据查询和检索功能。
事务
事务只是表示工作单元。在这种情况下,如果一步失败了,整个事务就会失败(这被称为原子性)。一个事务可以由 ACID
属性(原子性、一致性、隔离性和持久性) 来描述。
在 Hibernate
框架中,我们有 Transaction
接口来定义工作单元。它对事务实现(JTA
、JDBC
)进行了抽象。
关系
使用 Hibernate
,如果我们想在两个实体之间建立关系,则表之间必须存在外键关系,我们称之为引用完整性。拥有对象之间的关系的主要优点是,我们可以在一个对象上执行操作,然后将相同的操作传递到数据库中的另一个对象上。
以下是 Hibernate
中可以在对象之间拥有的四种类型的关系。
- 一对一
- 多对一
- 多对多
- 一对多
实体生命周期
在 Hibernate
中,我们可以创建一个实体的新对象并将其存储到数据库中,也可以从数据库中获取实体的现有数据。这些实体与生命周期相关,每个实体对象都通过生命周期的各个阶段。
Hibernate
生命周期主要有四种状态:
- 瞬态状态
- 持久状态
- 分离状态
- 已移除状态
Spring Data
Spring Data
是一个用于在 Spring
应用程序中访问数据的项目集合。它提供了一个通用的接口,用于处理各种类型的数据存储,包括关系数据库、NoSQL 数据存储和基于云的数据服务。Spring Data
的目标是通过在不同的数据存储和数据访问技术之间提供一致的高级存储库编程模型,简化 Spring
应用程序中的数据访问。这可以帮助开发人员编写更少的样板代码并专注于业务逻辑,同时仍能利用底层数据存储的全部功能。
Spring Data JPA
Spring Data JPA
是一个库,它使得在 Spring
应用程序中实现基于 Java Persistence API (JPA)
的存储库(一个“DAO”缩写)变得容易。它是在 JPA
之上的一个抽象,允许您使用更简单和更方便的 API 执行对数据库的 CRUD
(创建、读取、更新、删除)操作。Spring Data JPA
还提供了其他功能,如分页、动态查询生成等。
Spring Data Mongodb
Spring Data for MongoDB
是 Spring Data
项目的一部分,旨在为各种新数据存储库提供一个熟悉且一致的基于 Spring
的编程模型,同时保留库特定的功能和能力。
Spring Data MongoDB
项目提供了与 MongoDB
文档数据库的集成。Spring Data MongoDB
的关键功能领域是提供一个 POJO
中心模型,用于与 MongoDB DBCollection
交互,并轻松编写存储库风格的数据访问层。
Spring Data JDBC
Spring Data JDBC
是 Spring Data
项目的一部分,它提供了使用 JDBC
(Java Database Connectivity
)与关系型数据库进行交互的支持。它旨在提供一种简单且一致的编程模型,以使用 JDBC
与数据库进行交互,同时仍然允许在需要时使用 JDBC
的全部功能。Spring Data JDBC
提供了一组抽象和实用程序类,简化了与数据库的工作,例如用于执行 SQL
查询的简单模板类,用于实现数据访问对象(DAO
)的存储库抽象,以及支持查询结果的分页和排序。它适用于 Java
和 Kotlin
。
最后
为了方便其他设备和平台的小伙伴观看往期文章:
微信公众号搜索:Let us Coding
,关注后即可获取最新文章推送
看完如果觉得有帮助,欢迎 点赞、收藏、关注
Spring Boot 嵌入式服务器、Hibernate 关系和 Spring Data 全解析的更多相关文章
- Spring Boot 嵌入式Web容器
目录 前言 1.起源 2.容器启动流程解析 2.1.获取应用类型 2.2.容器启动流程 3.加载 Web 容器工厂 4.总结 前言 最近在学习Spring Boot相关的课程,过程中以 ...
- Spring Boot的前世今生以及它和Spring Cloud的关系详解。
要了解Spring Boot的发展背景,还得从2004年Spring Framework1.0版本发布开始说起,不过大家都是从开始学习Java就使用Spring Framework了,所以就不做过多展 ...
- Spring Boot 2 (五):Docker Compose + Spring Boot + Nginx + Mysql 实践
Spring Boot 2 (五):Docker Compose + Spring Boot + Nginx + Mysql 实践 Spring Boot + Nginx + Mysql 是实际工作中 ...
- spring boot 2.0(一)权威发布spring boot2.0
Spring Boot2.0.0.RELEASE正式发布,在发布Spring Boot2.0的时候还出现一个小插曲,将Spring Boot2.0同步到Maven仓库的时候出现了错误,然后Spring ...
- 【转】Spring Boot干货系列:(三)启动原理解析
前言 前面几章我们见识了SpringBoot为我们做的自动配置,确实方便快捷,但是对于新手来说,如果不大懂SpringBoot内部启动原理,以后难免会吃亏.所以这次博主就跟你们一起一步步揭开Sprin ...
- Spring Boot干货系列:(三)启动原理解析
Spring Boot干货系列:(三)启动原理解析 2017-03-13 嘟嘟MD 嘟爷java超神学堂 前言 前面几章我们见识了SpringBoot为我们做的自动配置,确实方便快捷,但是对于新手来说 ...
- 59. Spring Boot Validator校验【从零开始学Spring Boot】
大纲: (1) 入门例子: (2) 国际化: (3) 在代码中添加错误信息: (1) 入门例子: Validator主要是校验用户提交的数据的合理性的,比如是否为空了,密码长度是否大于6位,是否是纯数 ...
- (6)Spring Boot datasource - mysql【从零开始学Spring Boot】
在任何一个平台都逃离不了数据库的操作,那么在spring boot中怎么接入数据库呢? 很简单,我们需要在application.properties进行配置一下,application.proper ...
- Spring Boot学习总结(1)——Spring Boot入门
摘要:Spring Boots是为了帮助开发人员很容易的创建出独立运行和产品级别的基于 Spring 框架的应用. 从 Spring Boot 项目名称中的 Boot 可以看出来,Spring Boo ...
- # 曹工说Spring Boot源码(10)-- Spring解析xml文件,到底从中得到了什么(context:annotation-config 解析)
写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean ...
随机推荐
- Oracle设置日志参数-ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
要实现两个数据库之间的实时同步,需要给Oracle设置参数 ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; -- 执行了12小时,等待数据库中的其它事务都提交以后才 ...
- 主流开源分布式图计算框架 Benchmark
本文由美团 NLP 团队高辰.赵登昌撰写,首发于 Nebula Graph Community 公众号 前言 随着近年来数据的爆炸式增长,如何高效地分析处理数据,在业界一直备受关注.现实世界中的数据往 ...
- Python列表字典推导式
[一]语法 列表推导式可以利用列表,元组,字典,集合等数据类型,快速的生成一个特定需要的列表. 语法格式如下 [表达式 for 迭代变量 in 可迭代对象 [if 条件表达式]] [二]列表推导式 [ ...
- XAF Blazor 中使用 Blazor 组件
前言 文章的标题是不是感觉有点奇怪,但实际我们在XAFBlazor中使用Blazor组件是很繁琐的,我们需要将Blazor组件封装成属性编辑器(PropertyEditor),再用非持久化对象(Non ...
- Zabbix“专家坐诊”第179期问答汇总
欢迎大家加入乐维社区zabbix问答专栏,除了在论坛发帖求问外,还可以在QQ群里交流进步,并且每周三我们会进行免费的技术答疑活动. 问题一: Q:Zabbix alert syncer process ...
- python json实例解析
python和json python这个语言的流行程度不用我说了,估计大家都知道吧.在字符串处理领域,json真是神一样的存在.最近一个项目中用到了,才感觉到它的威力.感觉非常有必要做一个记录和总 ...
- 2、Azure Devops之Azure Boards使用
1.什么是Azure Boards 使用面板.积压工作.冲刺.查询管理项目的用户故事.待办事项.任务.特性和bug. 2.工作项(WorkItem) 工作项管理的可以管理和创建用户故事.特性.任务. ...
- 【Leetcode 907 907. 子数组的最小值之和】【单调栈dp】
import java.util.LinkedList; class Solution { public int sumSubarrayMins(int[] arr) { int n = arr.le ...
- 【732. 我的日程安排表 III】差分数组
class MyCalendarThree { private TreeMap<Integer, Integer> cnt; public MyCalendarThree() { cnt ...
- Leetcode 招商银行-03. 点燃木棒
用广度优先,暴力搜索.代码如下 import java.util.*; class Solution { public static void main(String[] args) { Soluti ...