database.abstractions#

Модуль предоставляет абстракции для работы с базами данных в рамках Neptune. Абстракции поддерживают как ORM, так и Repository паттерны и могут быть использованы для реализации API для работы с конкретной библиотекой.

Добавить в maven/dependencies#
     <dependency>
         <groupId>ru.tinkoff.qa.neptune</groupId>
         <artifactId>database.abstractions</artifactId>
         <version>${LATEST_RELEASE_OR_BETA_VERSION}</version>
     </dependency>
Добавить в build.gradle#
 dependencies {
     api group: 'ru.tinkoff.qa.neptune', name: 'database.abstractions', version: LATEST_RELEASE_OR_BETA_VERSION
 }

API

Абстрактный контекст#

Класс AbstractDatabaseStepContext содержит абстрактные базовые методы для осуществления CRUD-запросов в СУБД.

public class HibernateDatabaseContext extends AbstractDatabaseStepContext<HibernateDatabaseContext> {

    @Override
    public void stop() {
        // реализация метода остановки подключения к базе 
    }

    @Override
    protected <R, Q extends SequentialGetStepSupplier<HibernateDatabaseContext, R, ?, ?, ?> & InsertQuery<R>> R insert(Q query) {
        // реализация Create-запроса
    }

    @Override
    protected <R, Q extends SequentialGetStepSupplier<HibernateDatabaseContext, R, ?, ?, ?> & SelectQuery<R>> R select(Q query) {
        // реализация Read-запроса
    }

    @Override
    protected <R, S, Q extends SequentialGetStepSupplier<HibernateDatabaseContext, S, ?, ?, ?> & SelectQuery<S>> S update(Q query, UpdateAction<R>... actions) {
        // реализация Update-запроса
    }

    @Override
    protected <R, Q extends SequentialGetStepSupplier<HibernateDatabaseContext, R, ?, ?, ?> & SelectQuery<R>> R delete(Q query) {
        // реализация Delete-запроса
    }
}

Интерфейс OrmCompatible#

Интерфейс OrmCompatible содержит дополнительные методы для работы с JDO или JPA-объектами.

public class HibernateDatabaseContext extends AbstractDatabaseStepContext<HibernateDatabaseContext> implements OrmCompatible {

    // реализации методов AbstractDatabaseStepContext

    @Override
    public <R> R update(R toUpdate, UpdateAction<R>... actions) {
        // реализация Update-запроса
    }

    @Override
    public <R, Q extends Collection<R>> Q update(Q toUpdate, UpdateAction<R>... actions) {
        // реализация Update-запроса
    }

    @Override
    public <R> R delete(R toDelete) {
        // реализация Delete-запроса
    }

    @Override
    public <R, Q extends Collection<R>> Q delete(Q toDelete) {
        // реализация Delete-запроса
    }

    @Override
    public <R> R insert(R toInsert) {
        // реализация Create-запроса
    }

    @Override
    public <R, Q extends Collection<R>> Q insert(Q toInsert) {
        // реализация Create-запроса
    }
}