Spring Data Couchbase
Spring Data для Couchbase - это часть проекта Spring Data, которая предоставляет похожую и совместимую с Spring модель программирования для данной СУБД и сохраняя доступ к её функциональности.
Быстрый старт

Введение

Проект Spring Data Couchbase интеграцию с Couchbase Server. Ключевым функционалом является POJO-модель для взаимодействия с Couchbase Buckets и легкого написания слоя доступа к данным через репозитории.

Возможности

  • Поддержка Spring конфигурации как в Java-стиле(через @Configuration), так и в XML для Couchbase драйвера
  • Вспомогательный класс CouchbaseTemplate, который повышает производительность Couchbase операций. Включает в себя маппинг объектов между документами и POJO
  • Трансляция ошибок переносится в иерархию Spring Data Access Exception
  • Интеграция Rich Object Mapping в Spring Conversion Service
  • Автоматическая реализация интерфейсов репозиториев, включая поддержу собственных методов поиска(на основе Couchbase Views)
  • JMX администрирование и мониторинг
  • Прозрачная поддержка @Cacheable любого объекта, доступ к которому вы хотите повысить

Быстрый старт

Загрузка
Maven
Gradle

Рекомендованный путь для начального использования spring-data-couchbase в вашем проекте с использованием системы управления зависимостями – скопировать фрагмент кода ниже и вставить в вашу конфигурацию сборки. Нужна помощь? Ознакомьтесь с нашими руководствами по созданию приложений с использованием Maven и Gradle.

<dependencies>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-couchbase</artifactId>
        <version>1.1.0.RELEASE</version>
    </dependency>
</dependencies>

Конфигурация

package foo;

import foo;

@Configuration
@EnableCouchbaseRepositories
public class Config extends AbstractCouchbaseConfiguration {

    @Override
    protected List<String> bootstrapHosts() {
        return Arrays.asList("host1", "host2");
    }

    @Override
    protected String getBucketName() {
        return "default";
    }

    @Override
    protected String getBucketPassword() {
        return "";
    }
}

Пример репозитория

public interface UserRepository extends CrudRepository<User, String> {

    /**
     * Собственный метод поиска.
     */
    List<User> findByLastname(Query query);

}

Использование

@Service
public class MyService {

    private final UserRepository userRepository;

    @Autowired
    public MyService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    public void doWork() {
        userRepository.deleteAll();

        User user = new User();
        user.setLastname("Jackson");

        user = userRepository.save(user);

        Query query = new Query();
        query.setKey(ComplexKey.of("Jackson"));
        List<User> allUsers = userRepository.findByLastname(query);

    }
}

Обратите внимание, что для собственных методов поиска необходимо создать два Views на сервере:

Для findByLastname:

function (doc, meta) {
  if(doc._class == "com.example.entity.User" && doc.firstname) {
    emit(doc.firstname, null);
  }
}

Для findAll и count(добавьте также сокращение _count):

function (doc, meta) {
  if(doc._class == "com.example.entity.User") {
    emit(null, null);
  }
}
comments powered by Disqus
Spring Data Couchbase
Версия
Документация
Анонсы