如何将 Hibernate 与 NoSQL 数据库一起使用

已发表: 2022-11-20

如果您希望将 NoSQL 数据库与 Hibernate 一起使用,那么您很幸运。 Hibernate 支持多种不同的 NoSQL 解决方案,允许您选择最适合您需求的解决方案。 在本文中,我们将了解如何将 Hibernate 与 NoSQL 数据库结合使用。 我们将讨论将 NoSQL 数据库与 Hibernate 一起使用的好处,并向您展示如何配置 Hibernate 以使用 NoSQL 解决方案。

您可以使用众所周知的 JPA,通过使用 hibernate ogm 将实体模型保存在各种 NoSQL 存储中。 本系列的第一步是创建一个具有所需依赖项的 Java 项目,创建一些简单的实体,然后将它们写入存储区或从存储区读取它们。 您应该熟悉 Hibernate OGM 的持久化单元定义。 因为可以指定级联类型 PERSIST,所以一个人的持久性会自动导致其关联的远足被持久化。 与 Person 和 Hike 不同,它不使用 @Id,而是使用 @Embeddable。 因此,它始终是另一个实体(在本例中为 Hike)的一部分,并且其身份未知。 所有可用的属性都可以在名为的类中找到。

属性,类似于类型之类的。 之后,创建一个测试方法,继续加载并保留数据。 这两个动作发生在一个事务中,并被记录下来。 如果要在实际应用程序中部署诸如 CDI 或 EJB 的事务控制系统,则很可能会采用一种不太冗长的方法。 让我们稍后再谈。 新操作系统的功能之一是能够将 Hibernate OGM 映射到多个 NoSQL 存储。 例如,我们将使用 MongoDB 而不是 Neo4j 来处理文档数据。

映射非常流畅,类似于您在使用 MongoDB 等文档存储时所期望的。 每个商店都针对特定的用例,这意味着有特定的功能和配置选项可用。 可以使用本机 NoSQL 查询,并且可以通过 hibernate ogm 配置特定于商店的设置。 这篇博文是一个示例代码,可以在 GitHub 上找到。 试一试,让它发挥作用。

我如何在 MongoDB 上使用休眠模式? 开始使用hibernate MongoDB的第一步是使用 GitBug 从源代码构建 OGM。 只需一个依赖项,您就可以将 OGM 包含在您的 hibernate MongoDB 项目中。 创建一个包含持久性单元名称的 META-INF/persistence 文件。

Hibernate 然后将使用 MySQL 的自动增量数据库列来生成主键值。

截至目前,它并不支持所有的 NoSQL 数据存储,但它可以与某些数据存储一起使用,例如 Infinispan 和 Ehcache(键值)、MongoDB、CouchDB(文档)和 Neo4j(图形)。 此外,它可以处理事务和标准 JTA 事务。

使用 Hibernate,您可以将面向对象的领域模型连接到传统的关系数据库。 下面的教程教您如何使用适用于 Amazon DynamoDB 的 CData JDBC 驱动程序,通过休眠在您的 Amazon DynamoDB 存储库中生成 ORM。

Hibernate 可以与 Nosql 一起使用吗?

这个问题没有明确的答案,因为它取决于所使用的 hibernate 的具体实现。 hibernate 的某些实现可能适用于nosql 数据库,而其他的可能不适用。

结构化数据导向语言 (SQL) 也支持 Hibernate。 此外,Hibernate 支持Hibernate 查询语言(HQL) 以及本机 SQL。 它类似于 SQL,因为它是一种面向对象的查询语言。 在 HQL 的帮助下,可以在多个数据库平台上使用相同的查询语言。 通过使用 Hibernate,您可以指定查询的行为以及使用注释。 开发人员只需输入查询名称即可指定查询的行为。 此外,Hibernate 提供对多态性的支持,允许您指定查询的行为。 通过以这种方式轻松指定查询的行为,可以使用相同的代码来指定涉及不同类型数据的查询的行为。 希望使用相同语言跨多个数据库平台进行查询的开发人员可以使用 Hibernate。

Jpa 和 Mongodb:绝配

JPA 和 MongoDB 兼容吗? JPA 实体类可以与 MongoDB 一起使用。 数据持久化是 hibernate 企业 ORM 的一个重要方面,JPA 类可以与 MongoDB 一起使用。 此外,Spring Boot 包括 Redis、MongoDB、Neo4j、Elasticas、Solr Cassandra、Couchbase 和 LDAP 的自动配置。 因此,您无需学习任何编码即可开始使用 MongoDB 和 JPA。

是否可以将 Jpa 与 Nosql 数据库一起使用?

图片来源:https://medium.com

是的,可以将 JPA 与 NoSQL 数据库一起使用。 JPA 是一种 Java 规范,它定义了如何将 Java 对象映射到关系数据库。 但是,由于 NoSQL 数据库不是关系型的,因此没有标准的方法将 Java 对象映射到它们。 然而,有许多第三方库为各种 NoSQL 数据库提供 JPA 实现。

Spring Data 是一个将 Java POJO 类转换为 JPA 实体类并生成 MongoDB 存储库所需的映射注解的应用程序。 以下示例介绍了如何使用 Spring Data 创建和填充 MongoDB 存储库。 要导入 org.springframework.data.mongodb 存储库,请使用 com.example.springdata.mongodb 包。 将 org.springframework.data.mongodb.repository 文件导入 MongoRepository。 org.springframework.data.mongodb.repository 应该导入到 MongoTemplate 中。 您必须将 org.springframework.data.mongodb.repository 导入存储库。 将 org.springframework.data.mongodb.repository.document 导入您的 MongoDB 数据库。 该文件应导入为 com.mongodb。 导入 MongoClient 模型。 该集合是使用 com.mongodb.model 导入的。 使用 MongoDB 模型和索引的示例存储库。 #MongoRepositoryMapping (baseClass = MongoTemplate.class) 公共类 MongoRepository * @Document public Collection *Index * collection(); * 更新 public void add(Document document) * collectionadd(new Index(document.get ! 在 MongoDB 中,存储库的元数据(例如实体类、映射注释等)是使用 MongoTemplate 生成的。此外,Spring Data包括将 Java POJO 类转换为 JPA 实体类并生成 Neo4j 映射注释的方法。以下示例演示了如何使用 Spring Data 设置和填充 Neo4j 存储库。您可以从 com 导入 o​​rg.springframework.data.neo4j.repository .example.springdata包,从Neo4j仓库导入数据,需要导入org.springframework.data.neo4j.repository文件,org.springframework.data.neo4j.repository.文件导入导出到org.springframework .data.neo4j.repository. 例如导入文档。


Hibernate 中使用了哪个数据库?

图片来源:https://javawebtutor.com

Hibernate 是一个将面向对象领域模型映射到关系数据库的框架。 它支持各种数据库,包括 MySQL、Oracle 和 Microsoft SQL Server。

FoundationDB 是一个优秀的 NoSQL 数据库,但不应该用来代替 Hibernate。 结构化查询语言 (SQL) 是一种功能强大的编程语言,允许用户快速轻松地在关系数据库中创建查询和更新数据。 它与hibernate的区别在于它是独立于数据库的,它具有相同的代码,只要稍加改动就可以被各种数据库使用。

Hibernate 是否创建数据库?

因此,JPA 框架(如 EclipseLink 或 Hibernate)可以在将表和数据库内置到规范中后立即对其进行引导。 此外,它们还是验证新配置的休眠和 Java 开发环境的好方法。

Mongodb如何连接到Hibernate?

Mongodb 通过提供允许 Hibernate 与 MongoDB 数据库通信的 MongoDBDialect 连接到 Hibernate。 MongoDBDialect 类提供了许多方法,允许 Hibernate 在 MongoDB 数据库中创建、更新和删除文档。 此外,MongoDBDialect 类提供了一种允许 Hibernate 执行 MongoDB 查询的方法。

诸如 MongoDB 之类的 NoSQL 数据库被构建为具有灵活性并且能够有效地存储大量数据。 hibernate 协议充当 Java 应用程序和数据库层之间的链接,将 Java 类中的变量映射到表中的列和字段。 除了将 Java 数据类型映射到 SQL 数据类型之外,它还使开发人员无需执行大多数常见的与数据持久性相关的编程任务。 MongoDB 使用面向文档的数据库模型将数据存储在文档和集合中,而不是表中。 由于他们对键值对的值/内容的理解,文档存储数据库提供了更困难的查询。 对象/网格映射器由 Hibernate 生成,它使用其对象生命周期管理和(脱水)水化引擎,但将实体保留在 NoSQL 数据库中。 Hevo Data 是一个无代码数据管道,它提供了一个完全托管的解决方案,用于在 MongoDB 和其他平台之间创建数据集成。

通过使用 hibernate ogm,您可以将嵌套的 Java 数据类型分配给存储在 MongoDB 系统中的 MongoDB 数据库中的文档。 这是我们最接近我们在本文开头讨论的关系模型,因为我们将关系数据存储在第三个表 Employee_address 中。 在这种情况下,HIBM 会将@id 注释转换为_id 文档字段,并使用相同的id 保存相应的文档,导致@id 属性被转换为_id 文档字段。 基于 MongoDB 的数据存储可以存储在内存中或动态存储。 借助 hibernate 访问和查询 MongoDB 数据库非常简单。 要全面了解您的业务表现,您必须将 MongoDB 和其他数据源整合到云数据仓库中。 因此,Hevo 变得可用。

您的 Java 应用程序应该使用哪种 Nosql 解决方案?

除了存储数据之外,NoSQL 解决方案还有许多优势。 尽管这些解决方案与Java Persistence兼容,但它们无法在机器上运行。 通过利用 Hibernate OGM,您可以在 Java 应用程序中使用 NoSQL 解决方案和 Java Persistence (JPA)。 许多其他数据库也可以在 DataNucleus JPA 中使用。 您可以选择最能满足您需求的解决方案。

休眠 Dynamodb

假设您想要了解 DynamoDB,它是亚马逊提供的基于云的 NoSQL 数据库服务。 它以低延迟、高性能和可扩展性着称。 DynamoDB 可用作键值存储、文档存储或宽列存储。
DynamoDB 通常与用于缓存的 Amazon ElastiCache、用于大数据处理的 Amazon EMR 以及用于监控的 Amazon CloudWatch 结合使用。

我们可以使用 Dynamodb 进行缓存吗?

DynamoDB 中的缓存缓存,另一方面,是数据的存储以供重用,这使得用户更容易访问内容。 此外,通过缓存DynamoDB,将数据库操作由重操作降为轻操作,让前端客户端可以更快地检索数据,提升用户体验。

Dynamodb 是无状态的还是有状态的?

DynamoDB 是一种网络服务,因此它与其他网站之间的交互是无状态的。

Dynamodb有Rest Api吗?

本质上是 RESTful,数据以 JSON 格式返回; 与其他 NoSQL 数据库类似,Amazon DynamoDB API 返回 JSON 数据。

Nosql 数据库 Spring Boot

Nosql 数据库 spring boot是一个专为与 spring boot 框架一起使用而设计的数据库。 这是为 spring boot 应用程序存储数据的便捷方式。

在本教程中,我们将介绍如何使用 Spring Boot 连接到 NoSQL 数据库。 本项目将使用 Apache Cassandra、DataStax Astra DB 和 Apache Anasazi。 为了与我们的数据库交互,我们必须首先在主机平台上配置我们的 Astra 数据库。 在本教程中,我们将使用 Astra Spring Boot Starter 访问我们的 Cassandra 数据库。 Spring Data 存储库抽象将显着减少我们的数据访问层,它使用的样板代码数量显着减少。 让我们回顾一下用于存储和检索数据的基本服务和控制器。 接下来的步骤是添加一个带有一个端点的简单控制器来检索我们创建的购物清单。

根据我们在 http://localhost:8080/shopping/list 中发出的请求,我们将看到包含我们请求的购物清单对象的响应。 我们的配置文件中指定的所有配置属性都将转移到这里。 您无需担心是否同时使用这两种方法。

Mongodb 和 Spring Boot:绝配

MongoDB 是一种流行的 NoSQL 数据库,非常适合 Web 应用程序。 使用 Spring Boot,您可以轻松地将 MongoDB 集成到您的 Web 应用程序中。 Spring Boot 允许您创建 MongoDB 实例、连接到它并从中读取数据。

休眠模式

Hibernate OGM 是一种工具,可以轻松处理存储在 NoSQL 数据存储中的数据。 它提供了一个抽象层,可以轻松处理NoSQL 数据,而无需编写大量代码。

休眠 JIRA 是休眠 ogm 问题的来源。 2022年2月3日改为2022年2月3日,2021年1月3日改为2020年1月4日。固定2019年11月13日2021年3月19日改为更改为2023年3月19日。2020日历年的第一个日期为2020年10月7日。2020年10月13日,将增加一个新日期; 2020年5月1日,新增日期; 2020 年 8 月 1 日,将添加一个新日期。 2020 年 4 月 24 日,该申请被拒绝。 2020年4月25日 2018年4月25日 2019年12月6日 2020年1月11日 2018年1月23日,我给编辑写了一封信。

2019年1月11-11日、2019年1月16日、2019年2月20日、2019年2月25日、2019年2月28日、2019年2月29日、2019年1月18日、2019年3月20日。问题已于10月29日解决, 2018. 于2018年10月24日进行了更正。截至2018年12月18日,该问题尚未解决。2018年第一季度已经结束。 今年由美国专利商标局申报。 截至 2018 年 11 月 30 日,此问题已得到修复。2018 年 10 月 15 日至 2018 年 11 月 31 日期间,日期发生了变化。

Jpa Mongodb 应用程序

JPA MongoDB 应用程序是一种易于使用、功能强大且灵活的工具,它使使用 MongoDB 比以往任何时候都更容易。 JPA MongoDB 应用程序构建在 Java Persistence API 之上,并提供 JPA 规范的 MongoDB 特定实现。 JPA MongoDB 应用程序提供了一个 MongoDB 特定的 EntityManager,并允许您将 MongoDB 文档直接映射到您的 JPA 实体。 JPA MongoDB 应用程序还提供了一个 MongoDB 特定查询 DSL,这使得以类型安全的方式编写 MongoDB 特定查询变得容易。

Hibernate OGM(对象/网格映射器)类似于 MongoDB 等 NoSQL 数据库。 此实现基于Java 持久性注释(JPA),使 NoSQL 数据存储能够与 Java 交互。 OGM 和 JDBC 之间的主要区别是 JDBC 只能在其位置的子集中与数据库交互。 要在属性部分中设置的第一个属性是 JTA 平台,我们将其用作 5 位数字。 除了这些,还有一些额外的属性。 JPA 实体类由两个类组成。 通过定义一个类,我们可以在 JPA 中创建一个应用程序数据对象模型。 我们可以在以下示例中看到 JPA 帮助我们开发了 POJO 之间的分叉关系。

为什么使用 Mongodatabasefactory 而不是 Mongofactory

建议用户使用 MongoDatabaseFactory 接口而不是 MongoFactory。 MongoDatabaseFactory 类允许您更改底层数据库连接并使用各种驱动程序。