您的位置:首页 > 编程语言 > Java开发

003-spring-data-elasticsearch 3.0.0.0使用【一】-spring-data之概述、核心概念、查询方法、定义Repository接口

2018-03-03 12:29 966 查看

零、概述

  Spring Data Elasticsearch项目提供了与Elasticsearch搜索引擎的集成。Spring Data Elasticsearch的关键功能区域是一个POJO中心模型,用于与Elastichsearch Documents进行交互并轻松编写存储库样式数据访问层。

0.1、主要功能

  1.Spring配置支持使用基于Java的@Configuration类或ES客户端实例的XML名称空间。

  2.ElasticsearchTemplate帮助类,提高执行常见ES操作的生产力。包括文档和POJO之间的集成对象映射。

  3.功能丰富的对象映射与Spring的转换服务集成

  4.自动实现Repository接口,包括支持自定义find[查找器]方法。

  5.CDI支持存储库

  maven使用上节已说明

0.2、文档说明

参看地址:https://docs.spring.io/spring-data/elasticsearch/docs/3.0.4.RELEASE/reference/html/

0.3、元数据地址

Version Control - https://github.com/spring-projects/spring-data-elasticsearch
Bugtracker - https://jira.spring.io/browse/DATAES Release repository - https://repo.spring.io/libs-release Milestone repository - https://repo.spring.io/libs-milestone Snapshot repository - https://repo.spring.io/libs-snapshot git:https://github.com/spring-projects/spring-data-elasticsearch
官方发布说明:https://projects.spring.io/spring-data-elasticsearch/

一、Spring Data Repositories

  本节信息来自Spring Data Commons模块,支持Java Persistence API (JPA) module

1.1、核心概念

  CrudRepository为正在管理的实体类提供了复杂的CRUD功能。

示例一、CrudRepository接口【基本上都是字面含义】

//设置了非空
package com.acme;

import org.springframework.lang.Nullable;

interface UserRepository extends Repository<User, Long> {
//如果执行的查询不产生结果,将抛出EmptyResultDataAccessException。在传递给方法的emailAddress为空的情况下会抛出IllegalArgumentException
User getByEmailAddress(EmailAddress emailAddress);
//如果执行的查询不产生结果,将返回null。也接受null作为emailAddress的值。
@Nullable
User findByEmailAddress(@Nullable EmailAddress emailAdress);
//如果执行的查询不产生结果,将返回Optional.empty()。在传递给方法的emailAddress为空的情况下会抛出IllegalArgumentException。
Optional<User> findOptionalByEmailAddress(EmailAddress emailAddress);
}


View Code

1.3.3、将存储库与多个Spring Data模块一起使用

  在应用程序中使用唯一的Spring Data模块使事情变得简单,因此定义范围内的所有存储库接口都绑定到Spring Data模块。有时应用程序需要使用多个Spring Data模块。在这种情况下,存储库定义需要区分持久性技术。Spring Data进入严格的资源库配置模式,因为它检测到类路径上的多个资源库工厂。严格配置需要存储库或域类的详细信息来决定存储库定义的Spring Data模块绑定:

  1、如果存储库定义扩展了特定于模块的存储库,那么它就是特定的Spring Data模块的有效候选者。

  2、如果domain类使用特定于模块的类型注释进行注释,那么它是特定的Spring Data模块的有效候选者。Spring Data模块接受第三方注释(比如JPA的@Entity)或者为Spring Data MongoDB / Spring Data Elasticsearch提供自己的注释,例如@Document。

参看原始文档:地址
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: