Spring Data для Couchbase - это часть проекта Spring Data,
которая предоставляет похожую и совместимую с Spring модель программирования для данной СУБД и
сохраняя доступ к её функциональности.
Быстрый старт
Проект Spring Data Couchbase интеграцию с Couchbase Server. Ключевым функционалом является POJO-модель для взаимодействия с Couchbase Buckets и легкого написания слоя доступа к данным через репозитории.
@Configuration
), так и в XML для Couchbase драйвера@Cacheable
любого объекта, доступ к которому вы хотите повысить
Рекомендованный путь для начального использования 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);
}
}