Hibernate. INSERT/UPDATE операции#

import org.testng.annotations.Test;
import ru.tinkoff.qa.neptune.hibernate.model.TestEntity;

import java.util.List;

import static ru.tinkoff.qa.neptune.database.abstractions.UpdateAction.change;
import static ru.tinkoff.qa.neptune.hibernate.HibernateContext.hibernate;
import static ru.tinkoff.qa.neptune.hibernate.select.common.CommonSelectStepFactory.byId;
import static ru.tinkoff.qa.neptune.hibernate.select.common.CommonSelectStepFactory.byIds;

public class MyTest {

    @Test
    public void test() {
        TestEntity testEntity; //ранее полученная или новая запись
        TestEntity testEntity2; //ранее полученная или новая запись

        //прямое сохранение новой/измененной записи
        TestEntity saved = hibernate().saveOne("Test entity", testEntity);

        //прямое сохранение нескольких новых/измененных записей
        Iterable<TestEntity> savedEntities = hibernate().saveAll("Test entities",
            testEntity, testEntity2);

        //прямое сохранение коллекции новых/измененных записей
        Iterable<TestEntity> savedEntities2 = hibernate().saveAll("Test entities",
            List.of(testEntity, testEntity2));

        //прямое сохранение новой/измененной записи
        TestEntity saved2 = hibernate().saveOne("Test entity",
            testEntity,
            change("Set new ID = 10", e -> e.setId(10L)), //с документированием сделанных
            change("Set new name = \"Test Name 1\"", e -> e.setName("Test Name 1")), //изменений
            change("Update ListData", e -> e.setListData(List.of("A1", "B1", "C1", "D1"))),
            change("Update ArrayData", e -> e.setArrayData(new String[]{"A1", "B1", "C1", "D1"})));
        //в случае с прямым сохранением записей необязательно документировать сделанные изменения
        //тоже самое для прямого сохранения нескольких/коллекций записей

        //сохранение измененной записи, полученной с помощью запроса
        TestEntity saved3 = hibernate().saveByQuery("Test entity",
            byId(TestEntity.class, 1L),
            change("Set new ID = 10", e -> e.setId(10L)), //с документированием сделанных
            change("Set new name = \"Test Name 1\"", e -> e.setName("Test Name 1")), //изменений
            change("Update ListData", e -> e.setListData(List.of("A1", "B1", "C1", "D1"))),
            change("Update ArrayData", e -> e.setArrayData(new String[]{"A1", "B1", "C1", "D1"})));
        //в случае с сохранением записей, полученных запросом, обязательно документировать сделанные изменения

        //сохранение измененных записей, полученных с помощью запроса
        //аналогично примеру выше
        Iterable<TestEntity> savedEntities3 = hibernate().saveAllByQuery("Test entities",
            byIds(TestEntity.class, 1L, 2L),
            change("Set new ID = 10", e -> e.setId(10L)),
            change("Set new name = \"Test Name 1\"", e -> e.setName("Test Name 1")),
            change("Update ListData", e -> e.setListData(List.of("A1", "B1", "C1", "D1"))),
            change("Update ArrayData", e -> e.setArrayData(new String[]{"A1", "B1", "C1", "D1"})));
    }
}