Рубрика «jpa»
Joker 2021: прошедшая Java-конференция и общая статистика
2021-10-30 в 18:33, admin, рубрики: jacoco, java, joker, jpa, jug.ru, kotlin, neo4j, olap, quarkus, scala, spring, конференцииОбзор рассказывает об увиденных и услышанных докладах, о полученных при этом впечатлениях и о произошедших изменениях в проведении конференции формата онлайн.
Читать полностью »
Мягкое удаление в Hibernate: неочевидные факты
2021-09-22 в 12:48, admin, рубрики: crud, hibernate, java, jpa, Блог компании Haulmont, ПрограммированиеМягкое удаление (soft deletion) — это популярная в энтерпрайз разработке стратегия удаления, когда вместо физического стирания та или иная запись помечается как удаленная, а потом фильтруется во всех запросах на чтение. Применение мягкого удаления может быть оправдано целым набором требований: аудит, возможность восстановления удаленных записей, а иногда необходимо уметь удалять данные, при этом сохраняя на них ссылки из других записей…
Нам, как авторам JPA Buddy Читать полностью »
Как работают методы persist, merge из JPA и методы save, update, saveOrUpdate из Hibernate
2019-09-03 в 12:38, admin, рубрики: Entity, hibernate, java, jpa, merge, NonUniqueObjectException, persist, save, saveOrUpdate, update, Блог компании OTUS. Онлайн-образованиеДобрый день, друзья. Перевод статьи подготовлен специально для студентов курса "Разработчик Java".
Введение
В этой статье я собираюсь показать вам, как работают методы persist
, merge
из JPA и сравнить их с методами save
, update
, saveOrUpdate
из Hibernate.
Хотя лучше использовать JPA-методы для изменения состояния сущности (рус.),
вы увидите, что метод save
из Hibernate является хорошей альтернативой merge
, когда вы хотите уменьшить количество SQL-запросов, выполняемых во время пакетной обработки (batch processing).Читать полностью »
Выпускаем Predator — предкомпилированные Data-репозитории
2019-07-21 в 18:35, admin, рубрики: gorm, Groovy & Grails, hibernate, java, jdbc, jpa, kotlin, micronaut, spring data, микросервисы
Сегодня, команда Micronaut в Object Computing Inc (OCI) представила Predator, новый проект с открытым исходным кодом, цель которого — значительно улучшить время выполнения и производительность (по памяти) доступа к данным для микросервисов и serverless-приложений, при этом не потеряв в продуктивности по сравнению с такими инструментами, как GORM и Spring Data.
Замечательная аннотация Version в JPA
2018-12-30 в 8:36, admin, рубрики: Doctrine ORM, hibernate, java, jpa, orm, ПрограммированиеВведение
Итак, начнем! Что же означает аннотация Version в JPA?
Если коротко, то она отвечает за блокировки в JPA. Данная аннотация решает одну из проблем, которые могут возникнуть в результате параллельного выполнения транзакций.
Какие же могут возникнуть проблемы?
- Потерянные обновления могут возникнуть в ситуациях, когда две транзакции, выполняющиеся параллельно, пытаются обновить одни и те же данные.
- Грязные чтения возникают, когда транзакция видит еще не сохранённые изменения, сделанные другой транзакцией. В таких случая может возникнуть проблема из-за отката второй транзакции, но при этом данные уже были прочитаны первой.
- Неповторяемые чтения возникают, когда первая транзакция получила данные, а вторая транзакция внесла в них изменение и успешно закоммитила их, до окончания первой транзакции. Иначе говоря, когда в рамках одной транзакции один и тот же запрос на получение, например всей таблицы, возвращает разные результаты.
- Фантомное чтение — проблема похожая на неповторяемые чтения, за тем исключением, что возвращается разное количество строк.
Коротко о их решениях
- READ UNCOMMITED — решается с помощью аннотации Version в JPA(об этом как раз и статья)
- READ COMMITED — позволяет читать только закоммиченные изменения
- REPEATABLE READ — тут немного посложнее. Наша транзакция «не видит» изменения данных, которые были ею ранее прочитаны, а другие транзакции не могут изменять тех данных, что попали в нашу транзакцию.
- SERIALIZABLE — последовательное выполнение транзакций
Каждый последующий пункт покрывает все предыдущие, иначе говоря может заменить решения, указанные ранее. Таким образом SERIALIZABLE имеет самый высокий уровень изолированности, а READ UNCOMMITED — самый низкий.
Читать полностью »
Spring Boot. Фоновые задачи и не только
2018-04-06 в 8:31, admin, рубрики: java, java 8, java time, jpa, postgresql, scheduled, scheduler, spring, spring boot, spring data, фоновые задачиВведение
В данном туториале я хочу привести пример приложения для отправки email-ов юзерам, основываясь на дате их рождения(например с поздравлениями), используя аннотацию Scheduled. Я решил привести данный пример, т к по моему мнению он включает в себя довольно многие вещи, такие как работа с базой данных(в нашем случает это PostgreSQL), Spring Data JPA, новый java 8 time api, email-сервис, создание фоновых задач и небольшую бизнес-логику при этом оставаясь компактным. Сегодня интернет пестрит огромным множеством туториалов которые обычно сводятся к тому как наследоваться от CrudRepository, JpaRepository и тд. Туториал расчитан на то, что вы уже смотрели хотя бы некоторые из них и имеете представление о том, что такое Spring Boot. Я же постораюсь показать пример приложения, которое более обширно показывает его возможности и как с ним работать.
Создание проекта
Идем на Spring Initializr.
Добавляем зависимости:
1. PosgreSQL — в качестве базы данных
2. JPA — доступ к базе
3. Lombok — для удобства и избавления от бойлерплейт кода(не придётся писать геттеры, сеттеры и тд самим), подробнее тут
4. Mail — собственно для работы и отправки email-ов, оф. документация
Указываем группу и артефакт, к примеру com.application и task. Скачиваем и распаковываем проект, затем открываем его в среде разработки, у меня это Intellij IDEA.
База данных
Теперь устанавливаем себе PostgreSQL. Далее создаём базу данных с юзером и паролем. Если у вас линукс, то можете сделать это следующими командами:
sudo -u postgres createuser <username>
sudo -u postgres createdb <dbname>
$ sudo -u postgres psql
psql=# alter user <username> with encrypted password '<password>';
psql=# grant all privileges on database <dbname> to <username> ;
На windows это можно сделать с помощью pgAdmin или его альтернатив.
Читать полностью »
Как понять и подружиться с транзакциями и JPA
2017-04-03 в 9:16, admin, рубрики: java, javaee, jpa, orm, базы данных, моделирование данных, Программирование, Проектирование и рефакторинг, транзакцииНаверное, все знают о транзакциях в реляционных базах данных, все слышали про ACID. Но тем не менее есть разница между знать и прочувствовать, сам с этим столкнулся, когда пришлось переквалифицироваться в бэкэнд разработчика. Думаю, в тот момент подобная статья здорово бы мне помогла, надеюсь она окажется полезна и вам.
При разработке энтерпрайз приложений зачастую с базами данных взаимодействуют посредством ORM технологии, в мире джавы наиболее известна технология JPA (Java Persistence API) и её реализации — Hibernate и EclipseLink. JPA позволяет взаимодействовать с базой данных в терминах объектов предметной области, предоставляет кэш, репликацию кэша при наличии кластера в middle tier-е.
Как это обычно происходит:
Читать полностью »
Hibernate envers. Подмена ID пользователя совершившего изменение
2016-01-18 в 13:59, admin, рубрики: hibernate, java, java ee, jpa
Добрый день уважаемыее. Это моя первая статья, пожалуйста, сильно не ругайтесь.
Об аудировании в Hibernate написано уже немало. Я хочу рассказать о решении не совсем стандартной задачи — записи в таблицу ревизий ID любого пользователя, назначаемого непосредственно перед операцией записи сущности в базу данных. Стандартное решение, предложенное в официальной документации — использование ID пользователя, сохраненного в сессионном компоненте. Но возможна ситуация, когда ID пользователя необходимо подменить. Пример: пользователь совершает операции через взаимодействие с сервером телефонии посредством DTMF сигналов. В данном случае сессию создавать вообще не нужно. Я долго искал решение в интернете, но так ничего и не нашёл, поэтому предлагаю вашему вниманию свою версию. Возможно кому-то из новичков, вроде меня, она окажется полезной.
Читать полностью »
Краткий обзор новых возможностей JPA-RS в EclipseLink
2014-10-17 в 16:13, admin, рубрики: eclipse, java, jpa, JPARS, oracle, rest, RESTful EclipseLink — это ORM фрэймворк с открытым исходным кодом, разрабатываемый Eclipse Foundation. В конце года запланирован выход версии 2.6.0. проекта. В преддверии этого, я хочу ознакомить вас с некоторыми новыми возможностями службы JPA-RS, которая является частью EclipseLink.
JPA-RS позволяет автоматически генерировать RESTful сервисы на базе предоставленной пользователем JPA модели. При этом практически никакой дополнительной работы от пользователя не требуется.
Читать полностью »