JPA @OneToMany 关系中的 List 与 Set
1、概览 {#1概览} ----------- [Spring JPA](/spring-data-jpa/) 和 *Hibernate* 为不同据库通信提供了强大的工具。然而,随着开发者将更多的控制权(包括查询生成)委托给框架,结果可能与我们的预期相去甚远。 开发者通常会对在多对多关系中使用列表(`List`)还是集合(`Set`)产生困惑。而且,Hibernate 对其...
1、概览 {#1概览} ----------- [Spring JPA](/spring-data-jpa/) 和 *Hibernate* 为不同据库通信提供了强大的工具。然而,随着开发者将更多的控制权(包括查询生成)委托给框架,结果可能与我们的预期相去甚远。 开发者通常会对在多对多关系中使用列表(`List`)还是集合(`Set`)产生困惑。而且,Hibernate 对其...
1、概览 {#1概览} ----------- Querydsl 和 JPA Criteria 是在 Java 中构建类型安全查询的流行框架。它们都提供了以静态类型表达查询的方法,使编写与数据库交互的高效、可维护代码变得更容易。本文将从多个角度对它们进行比较。 2、设置 {#2设置} ----------- 首先,设置依赖。在所有示例中,都使用 [*HyperSQL*](...
1、概览 {#1概览} ----------- **Persistence Context** (持久化上下文)和 **Persistence Unit**(持久化单元)是 JPA 中的两个重要概念,用来管理应用中实体的生命周期。 本文将带你了解 JPA 中的 **EntityManager** (实体管理器) 的作用,以及 *Persistence Context* 和 ...
1、概览 {#1概览} ----------- 本文将带你了解 JPA 如何自动保存复杂的实体模型(即由父实体和子实体元素组成的复杂模型)以及常见的问题。 2、缺失关系注解 {#2缺失关系注解} ------------------- 我们可能会忽略的第一件事就是添加关系注解。 创建一个子实体: ```java @Entity public class Bidir...
1、简介 {#1简介} ----------- 继承(Inheritance)和组合(Composition)是面向对象编程(OOP)中的两个基本概念,我们也可以在 JPA 中利用它们进行数据建模。在 JPA 中,继承和组合都是对实体间关系进行建模的技术,但它们代表的是不同类型的关系。本文将带你了解这两种方法及其影响。 2、JPA 中的继承 {#2jpa-中的继承} ---...
1、概览 {#1概览} ----------- 缓存数据意味着我们的应用无需访问速度较慢的存储层,从而提高了性能和响应速度。我们可以使用任何内存实现库(如 [Caffeine](https://www.baeldung.com/java-caching-caffeine))来实现缓存。 虽然这样做可以提高数据检索的性能,但如果应用部署在多个副本上,那么实例之间就无法共享缓存...
1、概览 {#1概览} ----------- 本文将带你了解如何根据自定义属性动态注册 Bean。 主要是学习 `BeanDefinitionRegistryPostProcessor` 接口,以及如何使用它将 Bean 添加到 Application Context 中。 2、设置 {#2设置} ----------- 创建一个简单的 Spring Boot 应用。...
本文将带你了解什么是虚拟线程、虚拟线程是如何提高应用吞吐量的,以及如何为 Spring Boot 应用启用虚拟线程。 并发编程的演化 {#并发编程的演化} ------------------ ### 线程 {#线程} 总所周知,线程(Thread)是计算机中的最小执行单元,由操作系统直接进行调度,每个线程都有自己的执行路径和执行状态,可以独立地运行和并发执行多个任务。 ...
1、概览 {#1概览} ----------- 本文将带你了解如何在 Spring 中使用运行时参数创建一个 Prototype Scope Bean。 在 Spring 中,有许多不同的 Bean Scope,默认的 Scope 是 Singleton(单例)。Singleton Scope 的 Bean 将始终产生相同的对象。 如果每次都需要从容器中获得一个新实例,可...
1、概览 {#1概览} ----------- 本文将带你全面了解如何使用 [Spring Data JPA](/spring-data-jpa/) 在 PostgreSQL *JSONB* 列中存储、检索 *JSON* 数据。 2、VARCHAR 映射 {#2varchar-映射} --------------------------- 本节将介绍如何使用 `Attri...