分类目录归档:Java

使用JPA和Spring Data JPA限制查询结果


1.简介

在本教程中,我们将学习如何使用JPA和Spring Data JPA 限制查询结果。

首先,我们将查看要查询的表以及要重现的SQL查询。

然后我们将直接探讨如何使用JPA和Spring Data JPA实现这一目标。

让我们开始吧!

2.测试数据

下面我们将在本文中查询表格。

我们想要回答的问题是,“首先占用的座位是什么,占用者是谁?”。

名字 座位号
吉尔 工匠 50
前夕 杰克逊 94
弗雷德 布罗格斯 22
瑞奇 博比 36
思雅 Kolisi 85

3. SQL

使用SQL,我们可能会编写一个类似于下面的查询:

SELECT first...

阅读全文...

Spring Data JPA @Query


1.概述

Spring Data提供了许多方法来定义我们可以执行的查询。其中之一是 @Query注释。

在本教程中,我们将演示如何在Spring Data JPA中使用@Query注释来执行JPQL和本机SQL查询。

此外,我们将展示如何在@Query注释不够时构建动态查询 。

2.Select Query

为了定义要为Spring Data存储库方法执行的SQL,我们可以使用@Query注释来注释该方法 - 它的 value属性包含要执行的JPQL或SQL。

该@Query注释优先于命名查询,这些注释与@NamedQuery或在定义的orm.xml中的文件。

将查询定义放在存储...

阅读全文...

A Guide to Multitenancy in Hibernate 5


1.简介

多租户允许多个客户端或租户使用单个资源,或者在本文的上下文中使用单个数据库实例。目的是将每个租户需要的信息与共享数据库隔离开来。

在本教程中,我们将介绍在Hibernate 5中配置多租户的各种方法。

2. Maven依赖

我们需要包括在休眠核心依赖于pom.xml的文件:

<dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate-core</artifactId>
   <version>5.2.12.Final&l...

阅读全文...

Lettuce简介 - Java Redis客户端


1.概述

本文介绍了Redius Java客户端Lettuce。

Redis是一个内存中的键值存储,可用作数据库,缓存或消息代理。使用对Redis内存数据结构中的键进行操作的命令添加,查询,修改和删除数据。

Lettuce支持完整Redis API的同步和异步通信使用,包括其数据结构,发布/订阅消息传递和高可用性服务器连接。

2.Why Lettuce?

我们在以前的一篇文章中介绍了Jedis 。是什么让生菜与众不同?

最重要的区别是它通过Java 8的CompletionStage接口提供异步支持,并支持Reactive Streams。正如我们将在下面看到的,Lettuce提供了一个...

阅读全文...

Working with Kotlin and JPA


1.简介

Kotlin的一个特点是与Java库的互操作性,而JPA肯定是其中之一。

在本教程中,我们将探索如何将Kotlin数据类用作JPA实体。

2.依赖性

为了简单起见,我们将使用Hibernate作为JPA实现; 我们需要将以下依赖项添加到Maven项目中:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.2.15.Final</vers...

阅读全文...

JPA属性转换器


1.简介

在这篇快速文章中,我们将介绍JPA 2.1中可用的属性转换器的用法 - 简单地说,它允许我们将JDBC类型映射到Java类。

我们将在这里使用Hibernate 5作为我们的JPA实现。

2.创建转换器

我们将展示如何为自定义Java类实现属性转换器。

首先,让我们创建一个PersonName类 - 稍后将转换:

public class PersonName implements Serializable {

    private String name;
    private String surname;

    // getters and setters
}
...

阅读全文...

Auditing with JPA, Hibernate, and Spring Data JPA


1.概述

在ORM的上下文中,数据库审计意味着跟踪和记录与持久实体相关的事件,或者仅仅是实体版本控制。受SQL触发器的启发,事件是对实体的插入,更新和删除操作。数据库审计的好处类似于源版本控制提供的好处。

我们将演示将审计引入应用程序的三种方法。首先,我们将使用标准JPA实现它。接下来,我们将看两个提供自己的审计功能的JPA扩展:一个由Hibernate提供,另一个由Spring Data提供。

以下是将在此示例中使用的示例相关实体Bar和Foo:

2.使用JPA进行审核

JPA没有明确包含审计API,但可以使用实体生命周期事件来实现功能。

2.1。@PrePersist, @PreUp...

阅读全文...

Introduction to Liquibase Rollback


1.概述

在我们之前的文章中,我们将Liquibase显示为管理数据库模式和数据的工具。

在本文中,我们将更多地介绍回滚功能 - 以及我们如何撤消Liquibase操作。

当然,这是任何生产级系统的关键特征。

2. Liquibase迁移的类别

有两类Liquibase操作,导致不同代的回滚语句:

  • automatic,其中迁移可以确定性地生成回滚所需的步骤
  • manual,我们需要发出回滚命令,因为迁移指令不能用于确定性地识别语句

例如,回滚“create table”语句将“ 删除”创建的表。这可以毫无疑问地确定,因此可以自动生成回滚语句。

另一方面,无法确定“drop table”...

阅读全文...

Database Migrations with Flyway


1.简介

本文介绍了Flyway的 关键概念以及我们如何使用此框架可靠,轻松地不断重新构建应用程序的数据库模式。最后,我们将介绍使用Maven Flyway插件管理内存H2数据库的示例。

Flyway使用迁移将数据库从一个版本更新为下一个版本。我们可以在SQL中使用数据库特定语法编写迁移,也可以在Java中编写迁移以进行高级数据库转换。

迁移可以是版本化的,也可以是可重复的。前者有一个独特的版本,只适用一次。后者没有版本。相反,每次校验和更改时(重新)应用它们。

在单个迁移运行中,在执行挂起的版本化迁移后,始终会始终应用可重复的迁移。可重复迁移按其描述顺序应用。对于单个迁移,所有语句都在...

阅读全文...

DynamoDB in a Spring Boot Application Using Spring Data


1.概述

在本文中,我们将通过实际的实际示例项目探索将DynamoDB集成到Spring Boot Application中的基础知识。

我们将演示如何使用Spring Data配置应用程序以使用本地DynamoDB实例。我们还将创建示例数据模型和存储库类,以及使用集成测试执行实际的数据库操作。

2. DynamoDB

DynamoDB是AWS上完全托管的托管NoSQL数据库,类似于其他NoSQL数据库,如Cassandra或MongoDB。DynamoDB提供快速,一致和可预测的性能,并且具有大规模可扩展性。

您可以在AWS文档中了解有关DynamoDB的更多信息。

让我们安装一个Dy...

阅读全文...