目录

ORM

对象/关系映射

JPA提供商

惯用的持久性

高性能

可扩展性

可靠的

可扩展性

Search

全文搜索实体

完全控制

简单而强大

本地或分布式

空间查询

集合体

Validator

应用层不可知验证

可扩展的

丰富的元数据API

参考实施

附加价值

OGM

许多NoSQL存储,一个用于访问它们的API

各种各样的后端

丰富的查询功能

还有更多...

Tools

映射编辑器

控制台

逆向工程

向导

Ant任务

Reactive

反应对象/关系映射

兼容性

入门

Others

Hibernate 分片

主要特征

开始吧


 hibernate官网地址:http://hibernate.org/ 

ORM

http://hibernate.org/orm/

对象/关系映射

Hibernate ORM使开发人员可以更轻松地编写其数据在应用程序进程中无法使用的应用程序。作为对象/关系映射(ORM)框架,Hibernate关注数据持久性,因为它适用于关系数据库(通过JDBC)。不熟悉ORM的概念?在这里阅读

JPA提供商

除了其自己的“本机” API,Hibernate还是Java Persistence API(JPA)规范的实现。这样,它可以轻松地在支持JPA的任何环境中使用,包括Java SE应用程序,Java EE应用程序服务器,Enterprise OSGi容器等。

惯用的持久性

Hibernate使您能够遵循自然的面向对象习惯用法(包括继承,多态性,关联,组合和Java集合框架)来开发持久类。Hibernate不需要用于持久类的接口或基类,并使任何类或数据结构都可以持久化。

高性能

Hibernate支持延迟初始化,多种获取策略以及具有自动版本控制和时间戳记的乐观锁定。Hibernate不需要特殊的数据库表或字段,并在系统初始化时而不是在运行时生成大量SQL。

从开发人员的生产力和运行时性能方面来说,Hibernate始终提供优于纯JDBC代码的卓越性能。

可扩展性

Hibernate旨在在应用程序服务器集群中工作并提供高度可扩展的体系结构。Hibernate在任何环境下都可以很好地扩展:使用它来驱动可为数百个用户服务的内部Intranet或为数十万个服务的关键任务应用程序。

可靠的

Hibernate以其出色的稳定性和质量而著称,并被成千上万的Java开发人员所接受和使用证明。

可扩展性

Hibernate具有高度的可配置性和可扩展性。

http://hibernate.org/search/

全文搜索实体

Hibernate Search自动从Hibernate ORM实体中提取数据,以将其推送到本地Apache Lucene索引或远程Elasticsearch索引。

它具有以下特点:

  • 通过注释或编程API将实体属性声明性映射到索引字段。

  • 按需 对数据库中的所有实体进行批量索引,以使用预先存在的数据初始化索引。

  •  通过Hibernate ORM会话修改的实体进行实时自动索引,以始终保持索引为最新。

  • 搜索DSL 可以轻松构建全文本搜索查询,并以Hibernate ORM实体的形式检索匹配。

  • 以及更多!(见下文)

例如,按如下所示映射您的实体:

@Entity
// This entity is mapped to an index
@Indexed
public class Book {

    // The entity ID is the document ID
    @Id
    @GeneratedValue
    private Integer id;

    // This property is mapped to a document field
    @FullTextField
    private String title;

    @ManyToMany
    // Authors will be embedded in Book documents
    @IndexedEmbedded
    private Set<Author> authors = new HashSet<>();

    // Getters and setters
    // ...
}

@Entity
public class Author {

    @Id
    @GeneratedValue
    private Integer id;

    // This property is mapped to a document field
    @FullTextField
    private String name;

    @ManyToMany(mappedBy = "authors")
    private Set<Book> books = new HashSet<>();

    // Getters and setters
    // ...
}

索引预先存在的数据,如下所示:

SearchSession searchSession = Search.session( entityManager );
MassIndexer indexer = searchSession.massIndexer( Book.class );
indexer.startAndWait();

自动索引不需要对基于JPA或Hibernate ORM的代码进行任何更改:

Author author = new Author();
author.setName( "Isaac Asimov" );

Book book = new Book();
book.setTitle( "The Caves Of Steel" );
book.getAuthors().add( author );
author.getBooks().add( book );

entityManager.persist( author );
entityManager.persist( book );

并像这样搜索:

SearchResult<Book> result = Search.session( entityManager )
        .search( Book.class )
        .where( f -> f.match()
                .fields( "title", "authors.name" )
                .matching( "Isaac" ) )
        .fetch( 20 );

List<Book> hits = result.hits();
long totalHitCount = result.total().hitCount();

完全控制

与网络搜索不同,这是您决定存储在何处的数据,域,应用程序。

您可以通过每个属性映射非常精确地选择要索引的内容(以及如何对其进行索引), 而使用自定义桥甚至可以更进一步。

您还可以更好地控制使用可配置分析处理 数据的方式,因此您可以:

  • 调整特定语言的文本处理。

  • 调整用于特定领域术语的文本处理(例如医学术语,自定义首字母缩略词扩展等)。

  • 控制排名过程:哪个结果更重要。

简单而强大

旨在从头开始易于使用。当您专注于搜索的业务方面时,可以透明地处理模式初始化,索引编制和查询语法。

Search DSL公开了许多不同的谓词, 并 通过简洁易用的API进行了排序

而且,如果您需要超越它,它并不会阻止您: 可以在Search DSL查询的中间插入本机Lucene查询 或Elasticsearch JSON

本地或分布式

虽然您会发现基于Apache Lucene的“单个框”的性能非常出色,但是您也可以通过分发应用程序并依靠Elasticsearch集群进行索引来进行横向扩展,而只需进行一些配置更改。

空间查询

索引地理定位的实体就像添加@GenericField注释一样容易 。

围绕特定位置( 例如用户位置)过滤结果,并使用距离排序 将最接近用户的匹配比萨店拉到顶部。

集合体

获取按组和类别汇总的搜索结果。

例如,网上商店将要显示所有点击,但还要按价格范围和品牌显示点击数。

Validator

http://hibernate.org/validator/

应用层不可知验证

Hibernate Validator允许表达和验证应用程序约束。默认的元数据源是注释,能够通过使用XML进行覆盖和扩展。它不依赖于特定的应用程序层或编程模型,并且可用于服务器和客户端应用程序编程。但是一个简单的例子说了1000多个字:

public class Car {

   @NotNull
   private String manufacturer;

   @NotNull
   @Size(min = 2, max = 14)
   private String licensePlate;

   @Min(2)
   private int seatCount;

   // ...
}

可扩展的

Hibernate Validator提供了可配置的Bootstrap API以及一系列内置约束。通过创建自定义约束,可以轻松扩展后者。

丰富的元数据API

Hibernate Validator通过元数据API(例如工具集成)提供对约束配置的访问。

参考实施

Hibernate Validator 6.x是Bean Validation 2.0的参考实现。

附加价值

Hibernate Validator除了Bean Validation所需的功能之外,还提供了附加价值。例如,程序约束配置API以及注释处理器,只要不正确使用约束注释,该注释处理器就会插入构建过程并引发编译错误。

OGM

http://hibernate.org/ogm/

许多NoSQL存储,一个用于访问它们的API

Hibernate OGM为NoSQL解决方案提供Java Persistence(JPA)支持。它重用了Hibernate ORM的引擎,但是将实体持久存储在NoSQL数据存储中,而不是关系数据库中。

我们知道您有问题,我们将在FAQ中回答。

各种各样的后端

OGM通过商店专用的方言与NoSQL后端进行对话。主要存储库包括以下方言:

  • 键/值Infinispan(嵌入式和远程)

  • 文件MongoDB

  • Neo4j(嵌入式和远程)

其他NoSQL数据存储区的方言由社区维护:

您最喜欢的NoSQL存储区未在此处列出吗?我们很乐意为添加它提供帮助

丰富的查询功能

Hibernate OGM支持几种搜索实体并将其作为Hibernate托管对象返回的方式:

  • JPQL查询(我们将它们转换为本地后端查询)

  • 数据存储特定的本机查询

  • 全文查询,使用Hibernate Search作为索引引擎

还有更多...

  • 当JPA还不够时,Hibernate OGM会使用特定于系列和特定于产品的选项对其进行扩展。这样,后端的强大功能就唾手可得。所有这些都以类型安全的方式进行。

  • 在一个应用程序中混合多个NoSQL数据存储,例如,将Neo4j用于您的友谊图,将MongoDB用于您的博客文章。或混合使用NoSQL和关系数据库。

  • 支持在数据加载时进行隐式数据迁移(以后)

  • 以声明方式对数据进行非规范化处理,以加快检索速度(稍后)

还有问题吗?查看我们的常见问题解答
想要看到它的实际效果吗?继续阅读 入门指南

Tools

http://hibernate.org/tools/

Hibernate Tools是用于Hibernate的工具集,实现为Eclipse插件的集成套件 ,以及用于集成到构建周期中的统一Ant任务。Hibernate Tools是JBoss Tools的核心组件, 因此也是JBoss Developer Studio的一部分。

Eclipse中提供以下功能。

映射编辑器

Hibernate XML映射文件的编辑器,支持自动完成和语法突出显示。该编辑器甚至支持对类名,属性/字段名,表名和列名进行语义自动补全。

映射编辑器

控制台

Hibernate Console透视图允许您配置数据库连接,提供类及其关系的可视化,并允许您针对数据库以交互方式执行HQL查询并浏览查询结果。

实时HQL查询编辑

逆向工程

Hibernate Tools最强大的功能是数据库逆向工程工具,可以在几秒钟内生成域模型类和Hibernate映射文件,带注释的EJB3实体bean,HTML文档甚至整个JBoss Seam应用程序!

向导

提供了几个向导,包括用于快速生成Hibernate配置(cfg.xml)文件的向导和Hibernate控制台配置。

Ant任务

Hibernate工具包含一个统一的Ant任务,使您可以在构建过程中运行模式生成,映射生成或Java代码生成。

Reactive

http://hibernate.org/reactive/

反应对象/关系映射

Hibernate Reactive是Hibernate ORM的反应式API,支持非阻塞数据库驱动程序以及与数据库交互的反应式。

Hibernate Reactive旨在用于诸如Vert.x或 Quarkus之类的反应式编程环境中,在该环境中与数据库的交互应以非阻塞方式进行。持久性操作是通过构造响应流而不是通过在过程Java代码中直接调用同步函数来进行安排的。

JDBC,JPA和Hibernate ORM使用阻塞IO与数据库进行交互,因此不适合在反应性环境中使用。Hibernate Reactive是功能丰富的ORM实现,旨在利用非阻塞数据库客户端。

兼容性

Hibernate Reactive要求:

  • Java 8

  • Hibernate ORM 5.4,以及

  • 数据库的Vert.x 3.9反应数据库客户端。

它适用于PostgreSQL,MySQL,MariaDB,Db2和CockroachDB。

入门

Hibernate Reactive简介》涵盖了入门所需的一切,包括:

Others

http://hibernate.org/others/

我们总是有解决数据相关问题的新思路。您可以在这里找到其中的一些实验。

Hibernate 分片

Hibernate Shards尚未与最新的Hibernate ORM版本保持同步。一些社区成员有兴趣使其赶上来。如果您有兴趣,请与我们联系

您不能总是将所有关系数据放在单个关系数据库中:

  • 有时您只是拥有太多数据。

  • 有时您具有分布式部署体系结构。

  • 有时律师会说“不”(或更可能是“不!”)。

无论出于何种原因,与多个关系数据库进行交谈都不可避免地会使应用程序的开发复杂化。

Hibernate Shards是一个框架,旨在通过向Hibernate Core添加对水平分区的支持来封装并最大程度地减少这种复杂性。

主要特征

标准的Hibernate编程模型

Hibernate Shards允许您继续使用您熟悉和喜爱的Hibernate API:SessionFactory,Session,Criteria,Query。如果您已经知道如何使用Hibernate,那么您已经知道如何使用Hibernate Shards。

灵活的分片策略

您可以根据需要在各个分片上分布数据。使用我们提供的默认策略之一或插入您自己的特定于应用程序的逻辑。

支持虚拟分片

认为您的分片策略永远不会改变吗?再想想。一旦部署了分片感知应用程序,添加新分片并重新分发数据将是您将面临的最棘手的运营挑战之一。Hibernate Sharding支持虚拟分片,该功能旨在简化重新分片数据的过程。

免费/开源

Hibernate Shards已获得LGPL(最小GNU公共许可证)的许可。

开始吧

下载

分配

文献资料

参考文档为html, 单页html或 pdf。 JavaDoc

源代码

的GitHub

问题追踪器

吉拉

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐