Pull to refresh
6
0
Аня Концевая @Arb9i

Software engineer (Java)

Send message

Автоматическое создание changeSet'ов Liquibase из Java entity

Reading time6 min
Views10K

При разработке и дальнейшей поддержки приложения база данных изменяется: добавляются, удаляются таблицы, столбцы и т.д. Для упрощения отслеживания изменений существует Liquibase. Эта библиотека, в начале запуска приложения решает, надо ли на конкретной базе выполнить конкретные скрипты, или же они в ней уже выполнены.

Каждый раз при добавление или изменение Entity, мы должны добавить новый changSet. Но что если я скажу, что есть плагин, который сам создает changeSetы на основе нашей Entity и уже существующей структуры базы данных?

Нам понадобится java, spring, gradle и liquibase plugin.

Начальные данные

Для начала нужно создать проект и пару простых Entity.

В файл build.gradle добавляем плагин:

plugins {
id 'org.liquibase.gradle' version '2.0.4'
}

Можно так же указать в переменных файл

liquibase {

activities {

main {

changeLogFile "$buildDir/generated-migrations.yaml"

url database.getProperty("dbUrl")

username database.getProperty("dbUsername")

password database.getProperty("dbPassword")

referenceUrl 'hibernate:spring:entity?dialect=org.hibernate.dialect.PostgreSQL10Dialect&hibernate.physical_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy&hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy'

logLevel 'debug'

}

runList = "main"

}

}

Читать далее
Total votes 3: ↑3 and ↓0+3
Comments8

Контролируем и сохраняем сессии, используя Spring

Reading time9 min
Views33K
Привет, Хабр.

При разработке многопользовательского web-приложение, понадобилось ограничить количество активных сессий для одного пользователя. В этой статье хочу поделиться с Вами свои решением.

Контроль сессий актуален для большого количества проектов. В нашем приложение необходимо было реализовать ограничение количества активных сессий для одного пользователя. При входе в систему (login) для пользователя создается активная сессия. При входе этого же пользователя с другого устройства необходимо не открывать новую сессию, а проинформировать пользователя об уже существующей активной сессии и предложить ему 2 варианта:

  • закрыть прошлую сессию и открыть новую
  • не закрывать старую сессию и не открывать новую сессию

Так же при закрытие старой сессии необходимо отправить уведомление администратору об этом событие.

И нужно учесть 2 возможности инвалидации сессии:

  • разлогин пользователя (т.е. нажатие пользователем кнопки logout)
  • автоматический разлогин после 30 минут бездействия
Читать дальше →
Total votes 10: ↑8 and ↓2+12
Comments10

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity