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、版本、...
JAVA SQL 查询结果映射之基础篇
通常,JPQL的功能不足以执行我们在现实项目中需要的查询。一般来说,这不是一个问题,因为 JPA 被设计为一个有漏洞的抽象,我们可以通过使用原生查询或调用存储过程来充分利用 SQL 的潜力。唯一的缺点是,这些查询返回的是 Object[] 的 List,而不是我们习惯使用的映射实体和值对象。每个 Object[] 都包含一条由数据库返回的记录。然后,我们需要...
如何使用 JPA 和 Hibernate 调用原生 SQL 查询
Java 持久化查询语言(JPQL)是使用 JPA 从数据库中查询数据的最常见方法。它使你能够重用映射定义,并且比 SQL 更易于使用。但它只支持 SQL 标准的一小部分,而且也不支持数据库特定的功能。那么,如果要使用特定于数据库的查询功能,或者 DBA 为你提供了一个无法转换为 JPQL 的高度优化的查询,该怎么办呢?忽略它并在 Java 代码...
Hibernate: 如何原生查询的控制缓存无效
问题描述:“有人告诉我,原生查询会从我的二级缓存中删除所有实体。但你仍然在推荐他们。它们不会对性能产生负面影响吗?”方案:是的,有些原生查询会使二级缓存失效。但是不用担心,如果你做得正确,它不会对性能产生任何负面影响,也不会改变我对于使用原生查询的建议。我们首先需要讨论哪种原生查询会使二级缓存失效。哪些原生查...
PHP 获取 Let's Encrypt 免费 SSL 证书
这个客户端是用 PHP 编写的,旨在成为一个基于 ACME V2 的简化和解耦的 Let's Encrypt 客户端。与文件系统或 Web 服务器解耦例如,这个客户端不需要在 nginx 配置下将证书写入磁盘,而是只返回数据(证书和私钥)。要求PHP7+opensslFlysystem (任何适配器都可) - 用以存储 Lets Encrypt 账号信息开始...
http 响应状态码
200 OK: 请求已成功,请求所希望的响应头或数据体将随此响应返回。201 Created: 请求已经被实现,而且有一个新的资源已经依据请求的需要而建立,且其 URI 已经随Location 头信息返回。假如需要的资源无法及时建立的话,应当返回 ‘202 Accepted’。202 Accepted:服务器已接受请求,但尚未处理。正如它可能被拒绝一样,最...