使用 PHP 和 Laravel Prompts 创建 SSH 应用
Sam Carré 的 ssh-php 项目是通过 SSH 在 PHP 中构建基于文本的用户界面(TUI)的一个简单得的起点...
WeakMap:PHP 中隐藏的宝石
WeakMap 是将对象作为 key 来访问的 map。WeakMap 中的对象 key 不影响对象的引用计数。也就是说,如果在任何时候对其唯一的剩余引用是 WeakMap key,那么该对象将会被垃圾收集并从 WeakMap 移除...
FetchType: Hibernate & JPA 的 Lazy/Eager 加载
在定义实体映射时,选择正确的 FetchType 是最重要的决定之一。它指定了 JPA 实现(例如 Hibernate)何时从数据库中获取关联实体。你可以在 EAGER 和 LAZY 加载之间进行选择。第一个选项会立即获取关联,另一个仅在使用它时才获取关联。我在本文中解释了这两个选项。选择正确的 FetchType 时的主要挑战是确保尽可能高效地获取实体,并...
使用 JPA 静态元模型创建类型安全的查询
编写条件查询或创建动态实体图时,需要引用实体类及其属性。最快捷、最简单的方法是将所需的名称作为字符串提供。但这有几个缺点,例如,在编写查询时,必须记住或查找实体属性的所有名称。但是,如果必须重构实体并修改某些属性的名称,那么在项目的后期阶段也会导致更大的问题。在这种情况下,必须使用 IDE 的搜索功能,并尝试查找引用修改后的属性的所有字符串。这是一个乏味且容...
Entities 或 DTO – 应该使用哪种投影?
JPA 和 Hibernate 允许你在 JPQL 和 Criteria 查询中使用 DTO 和实体(Entity)作为投影。当我在在线培训或研讨会上谈论 Hibernate 的性能时,经常被问到,使用哪种投影是否重要。答案是:是的!为用例选择正确的投影可能会对性能产生巨大的影响。我并不是说只检索你需要的数据。很明显,检索不必要的信息不会为你带来任何性能优势...
Hibernate 最佳实践
Hibernate 是迄今为止最受欢迎的 JPA 实现。这种受欢迎程度为所有用户带来了几个优势。有很多关于它的博客文章,流行论坛上的问答,以及公认的最佳实践。本文将总结一些 JPA 和 Hibernate 的最佳实践,...
JAVA SQL 查询结果映射之 Hibernate 特有的映射
这是 SQL 查询结果集映射系列的第四篇,也是最后最后一篇。在第一篇文章中,我们了解了一些将查询结果映射到实体的基本映射定义。在第二篇文章中,映射定义变得更加复杂,因为我们将查询结果映射到多个实体并处理额外的字段。在第三篇文中,我们了解了 JPA 2.1 中引入的一个新特性,即构造函数-结果映射。而本文,我们来看看一些 Hibernate 特有的特性,它们不...
JAVA SQL 查询结果映射之构造函数映射
这是 SQL 结果集映射系列的第三篇。在本系列的第一篇文章中,我们查看了查询结果和单个实体之间的一些映射定义。第二篇文章中的映射定义则更为复杂,因为我们将查询结果映射到了多个实体并处理了额外的字段。本文中,我们将查看 JPA 2.1 中引入的构造函数结果映射。该特性允许你使用查询结果调用值对象的构造函数,类似于 JPQL 构造函数表达式。如果我们想向客户端提...
JAVA SQL 查询结果映射之复杂映射
这是 SQL 查询结果映射的第二篇。我们在结果集映射的第一篇文章《基础篇》中了解了一些基本的结果类型映射。本文中,我们将定义更复杂的映射,这些映射可以将查询结果映射到多个实体,并处理无法映射到特定实体的其他字段。示例在我们深入研究更复杂的映射之前,让我们先看看将用于示例的实体模型。我们在本系列的第一篇文章中使用了 Author 实体,该实体具有 id、版本、...