Доступ к данным

В процессе разработки бизнес-логики бэкэнда необходимо загружать и сохранять сущности модели данных в базу данных. В этой главе описываются различные способы работы с сущностями с использованием API, которые предоставляются в Jmix.

См. также раздел Ключевые возможности, в котором рассматриваются концепции доступа к данным в Jmix.

Основным интерфейсом для CRUD (Create, Read, Update, Delete) операций с сущностями является DataManager. Он позволяет загружать графы сущностей по идентификатору или запросу, сохранять измененные экземпляры или удалять их. Вы можете использовать слушатели событий сущностей для выполнения действий по загрузке и сохранению определенных сущностей. DataManager поддерживает ссылки между сущностями из разных хранилищ данных как для JPA и DTO, так и для смешанных графов сущностей.

Чаще всего приложение работает с одной или несколькими реляционными базами данных, и для маппинга таблиц базы данных на классы Java используются сущности JPA. В этом случае DataManager работает через JpaDataStore на основе JPA провайдера EclipseLink. Такая реализация хранилища данных интегрирована с контролем доступа к данным, журналом сущностей и динамическими атрибутами. Она доступна в вашем проекте, если у вас есть следующая зависимость в build.gradle:

implementation 'io.jmix.data:jmix-eclipselink-starter'

Когда в данном руководстве говорится о DataManager и его возможностях, имеется в виду наиболее общий случай работы с сущностями JPA, если явно не указано иное.

См. также раздел REST DataStore для информации о том, как работать с DTO-сущностями, отображенными на универсальный REST API другого Jmix-приложения.

Другим вариантом работы с сущностями JPA является использование JPA EntityManager напрямую. Некоторые механизмы фреймворка несовместимы с концепцией "managed" сущностей, поэтому EntityManager имеет ряд ограничений по сравнению с DataManager.