51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Java笔记

为什么 JPA Entity 类需要有默认的无参构造函数?

为什么 JPA Entity 类需要有默认的无参构造函数?

厉飞雨 阅读(15) 评论(0) 赞(2)

1、概览 {#1概览} ----------- 在本教程中,我们将学习在 JPA 中,为什么实体类必须要有默认无参数构造函数? 为了理解无参数构造函数的意义,我们将使用一个简单的 `Employee` 实体示例。我们将观察缺少默认构造函数是如何导致编译时错误的。我们将深入探讨 JPA 在实体实例化中对 `Reflection` 的使用。此外,我们还将简要介绍这些类中可能需要...

在 JPA 投影查询中使用 Record

在 JPA 投影查询中使用 Record

厉飞雨 阅读(12) 评论(0) 赞(5)

Java 16 中引入的 Java Record 允许轻松地定义数据类(Data Class),这非常适合用于 JPA 中的投影查询。 Record 不能作为实体类 {#record-不能作为实体类} -------------------------------- Record 只能用于投影查询。像 Hibernate 等流行的 JPA 实现创建代理对象时需要无参构造函数...

JPA @OneToMany 关系中的 List 与 Set

JPA @OneToMany 关系中的 List 与 Set

厉飞雨 阅读(16) 评论(0) 赞(4)

1、概览 {#1概览} ----------- [Spring JPA](/spring-data-jpa/) 和 *Hibernate* 为不同据库通信提供了强大的工具。然而,随着开发者将更多的控制权(包括查询生成)委托给框架,结果可能与我们的预期相去甚远。 开发者通常会对在多对多关系中使用列表(`List`)还是集合(`Set`)产生困惑。而且,Hibernate 对其...

Querydsl 和 JPA Criteria

Querydsl 和 JPA Criteria

厉飞雨 阅读(10) 评论(0) 赞(3)

1、概览 {#1概览} ----------- Querydsl 和 JPA Criteria 是在 Java 中构建类型安全查询的流行框架。它们都提供了以静态类型表达查询的方法,使编写与数据库交互的高效、可维护代码变得更容易。本文将从多个角度对它们进行比较。 2、设置 {#2设置} ----------- 首先,设置依赖。在所有示例中,都使用 [*HyperSQL*](...

JPA 中的 PersistenceUnit 和 PersistenceContext

JPA 中的 PersistenceUnit 和 PersistenceContext

厉飞雨 阅读(16) 评论(0) 赞(0)

1、概览 {#1概览} ----------- **Persistence Context** (持久化上下文)和 **Persistence Unit**(持久化单元)是 JPA 中的两个重要概念,用来管理应用中实体的生命周期。 本文将带你了解 JPA 中的 **EntityManager** (实体管理器) 的作用,以及 *Persistence Context* 和 ...

JPA 级联保存实体中的子实体

JPA 级联保存实体中的子实体

厉飞雨 阅读(13) 评论(0) 赞(3)

1、概览 {#1概览} ----------- 本文将带你了解 JPA 如何自动保存复杂的实体模型(即由父实体和子实体元素组成的复杂模型)以及常见的问题。 2、缺失关系注解 {#2缺失关系注解} ------------------- 我们可能会忽略的第一件事就是添加关系注解。 创建一个子实体: ```java @Entity public class Bidir...

JPA 中实体的继承与组合

JPA 中实体的继承与组合

厉飞雨 阅读(12) 评论(0) 赞(4)

1、简介 {#1简介} ----------- 继承(Inheritance)和组合(Composition)是面向对象编程(OOP)中的两个基本概念,我们也可以在 JPA 中利用它们进行数据建模。在 JPA 中,继承和组合都是对实体间关系进行建模的技术,但它们代表的是不同类型的关系。本文将带你了解这两种方法及其影响。 2、JPA 中的继承 {#2jpa-中的继承} ---...

Spring 实现两级缓存

Spring 实现两级缓存

厉飞雨 阅读(9) 评论(0) 赞(0)

1、概览 {#1概览} ----------- 缓存数据意味着我们的应用无需访问速度较慢的存储层,从而提高了性能和响应速度。我们可以使用任何内存实现库(如 [Caffeine](https://www.baeldung.com/java-caching-caffeine))来实现缓存。 虽然这样做可以提高数据检索的性能,但如果应用部署在多个副本上,那么实例之间就无法共享缓存...

根据属性(Properties)动态注册 Spring Bean

根据属性(Properties)动态注册 Spring Bean

厉飞雨 阅读(10) 评论(0) 赞(1)

1、概览 {#1概览} ----------- 本文将带你了解如何根据自定义属性动态注册 Bean。 主要是学习 `BeanDefinitionRegistryPostProcessor` 接口,以及如何使用它将 Bean 添加到 Application Context 中。 2、设置 {#2设置} ----------- 创建一个简单的 Spring Boot 应用。...

Spring Boot 启用虚拟线程

Spring Boot 启用虚拟线程

厉飞雨 阅读(11) 评论(0) 赞(3)

本文将带你了解什么是虚拟线程、虚拟线程是如何提高应用吞吐量的,以及如何为 Spring Boot 应用启用虚拟线程。 并发编程的演化 {#并发编程的演化} ------------------ ### 线程 {#线程} 总所周知,线程(Thread)是计算机中的最小执行单元,由操作系统直接进行调度,每个线程都有自己的执行路径和执行状态,可以独立地运行和并发执行多个任务。 ...