Как спецификация Jakarta Data упрощает персистентность. Многие приложения, особенно в корпоративной сфере, хранят данные или каким-то образом обращаются к ним. Реляционные базы данных до сих пор чаще всего используются для сохранения данных, несмотря на то, что им в противовес стоят такие базы данных, как NoSQL. В этой статье рассматриваются некоторые концепции доступа к данным, а также то, как новая
спецификация Jakarta Data упрощает доступ к данным для разработчиков приложений.
Персистентность данных Начнем обсуждение с определения самой концепций персистентности. Если вы уже знакомы с этими понятиями, то можете пропустить эту часть и сразу перейти к следующему разделу с примерами кода.
CRUD. Наиболее распространенными операциями, используемыми в приложениях, сохраняющих данные, являются операции создания, чтения, обновления и удаления (CRUD). Операции CRUD обычно ассоциируются с реляционными базами данных, но могут быть применены к любым механизмам сохранения данных. Написание кода для этих операций обычно представляет собой повторяющуюся работу, состоящую в основном из шаблонного кода.
ORM. Объектно-реляционное отображение (ORM), как следует из названия, занимается отображением объектов объектно-ориентированного языка на данные в реляционной базе данных. Существует множество ORM-фреймворков, помогающих разработчикам решать эту задачу.
Jakarta Persistence, ранее называвшаяся JPA, — это спецификация, стандартизирующая управление персистентностью и объектно-реляционным отображением для Java-приложений.
Паттерн "Репозиторий". Существует несколько паттернов и стратегий, таких как Data Access Object (DAO), Repository, Active Record и другие, которые обычно используются для структурирования кода, связанного с CRUD-операциями. В этой статье будем использовать паттерн Repository.
Смысл паттерна Repository (о котором можно прочитать в книге Мартина Фаулера "
Patterns of Enterprise Application Architecture") заключается в том, чтобы не выносить специфику персистентности за пределы доменной модели приложения. Репозитории — это классы, которые инкапсулируют логику доступа к данным, тем самым отделяя механизм персистентности от доменной модели.
Repository стал популярным и широко используется благодаря таким технологиям, как
Spring Data; и не секрет, что именно Spring Data послужила источником вдохновения для Jakarta Data.
Jakarta Data.
Jakarta Data — это новая спецификация, которую предлагается включить в
Jakarta EE 11, выпуск которой запланирован на первую половину 2024 года. Реализуя паттерн Repository, Jakarta Data упрощает доступ к данным и уменьшает количество необходимого шаблонного кода. Разработчикам достаточно определить интерфейс, представляющий хранилище, и сущность, представляющую таблицу базы данных. Реализация Jakarta Data будет обеспечивать фактическую реализацию репозитория.
Простой пример с MySQL Рассмотрим на очень простом примере как Jakarta Data упрощает персистентность для разработчиков, избавляя их от необходимости использовать шаблонный код. В примере используются следующие технологии
MySQL 8.0.34
Open Liberty 23.0.0.9-beta
Так же должны быть установлены Apache Maven и JDK. Данный код был проверен на Java 20, но может работать и на других версиях.
В примере кода, в качестве среды выполнения используется Open Liberty. Однако при появлении другой реализации вы сможете заменить Open Liberty на другую реализацию без изменения кода.
Шаг 1. Убедитесь, что установлены Apache Maven и JDK. Вы должны увидеть что-то вроде следующего: