如何使用 Hibernate 实现软删除
某些应用中,你不希望或不允许从数据库中永久删除记录。但仍然需要删除或隐藏不再活动的记录。一个例子可能是想要保留的用户帐户,因为它链接到仍在使用的其他业务对象。你有两个基本选项可以将这些信息保存在系统中。你可以保留记录所有更改的审核日志,也可以执行隐藏已删除记录的软删除。我在关于Hibernate Envers 的文章中解释了审计日志选项。今天,我想展示如何使...
Lombok & Hibernate: 如何避免常见的陷阱
Lombok 是 Java 开发人员中流行的框架,因为它生成重复的样板代码,如 getter 和 setter 方法、equals 和 hashCode 方法以及默认构造函数。你所需要做的就是向类中添加一些注释,Lombok 将在编译时添加所需的代码。这对于普通类来说效果相当好,但如果将其用于 Hibernate 实体,则会引入一些危险的陷阱。为了避免这些陷...
Lombok 项目介绍
Java 是一种很棒的语言,但对于我们在代码中必须执行的常见任务或遵守某些框架实践来说,它有时会变得过于冗长。这通常不会给我们项目的商业方面带来任何真正的价值,而这正是 Lombok 让我们更有效率的地方。它的工作方式是嵌入到我们的编译过程,并根据我们在代码中引入的诸多项目注释,将 Java 字节码自动生成到 .class 文件中。将它引入...
TIOBE 编程语言排名: 2024 年 6 月
6 月头条:C++ 排名历史上首次超过 C。C++ 是 TIOBE 指数排名中的第二名。最初,它被称为更好的面向对象的 C 版本,在 C++ 诞生后花了 39 年的时间才击败了 C。C++ 在 TIOBE 指数中从未如此之高,而 C 从未如此之低。从 2011年起,C++ 开始了新的生命,它持续3年更新一次。尽管大多数编译器和大多数工程师都无法跟上这一步伐,但...
Git Squash 用法
在开发一个功能的时候会反复的提交代码,会造成一个功能有很多次提交,在我们要向 mian 做分支合并的时候,就会出现很多 commits,在合并以后同一个功能的 commits 就会很多,导致我们无法清晰的知道这个功能关联的 commit 有哪些,这个 squash 就是优化我们的 commits 信息,让我们的版本仓库看起来简洁明了,功能点一目了...
Laravel 底层 - 扩展框架
几天前,我正在修复一个不稳定的测试,结果发现我的工厂需要一些 unique 和 valid 值。Laravel 封装了 FakerPHP,我们通常通过 fake() 助手来访问它。FakerPHP 附带了 valid() 和 unique() 等修饰符,但你一次只能使用一个,所以不能执行 fake()->unique()->valid(),这正是我...
构建可维护的 PHP 应用:思考数据与思考业务流程
互联网上的大多数教程以及其他正规或非正规教育,都教会开发人员如何用 CRUD 思维构建项目,CRUD 思维高度技术化,专注于数据操作,类似于 Excel 的发明初衷,几十年来一直在做它的工作。这是可以理解的,因为编程的入门材料需要简单易用。不要误解我的意思,作为一个起点,内容对初学者来说很好,但当构建真实世界的项目时,它们比学习材料中显示的更复杂。如果你真的...
在 PHP 中使用 ScraperAPI 爬取 Google 网页搜索
当你手动做事时,在网上抓取数据是一个令人厌烦的过程。例如,如果碰巧使用 PHP 进行操作,则需要执行以下步骤。使用 file_get_contents() 函数获取网站内容使用 DOMDocument 类解析内容然后使用 loadHTML()函数加载数据最后,使用 getElementsByTagName() 函数遍历 DOM 树虽然这是有效的,但这是一个乏...
Laravel Collections 新增的 select 方法
还记得 Laravel Collections 中 only 方法吗,它允许你从集合中检索项目子集,例如,如果有一个这样的数据数组。$collection = collect([ 'name' => 'Amit', 'age' => 30, 'city' =>'Surat',...